# HG changeset patch # User Christian Urban # Date 1478601064 0 # Node ID 714e60f22b17baa600b74599c73fbca4775215ca # Parent 52713e632ac02ba4666f85ead5a103c00a318f10 updated diff -r 52713e632ac0 -r 714e60f22b17 progs/collatz_.scala --- a/progs/collatz_.scala Tue Nov 08 10:30:42 2016 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,29 +0,0 @@ -// Part 1 - - -//(1) -def collatz(n: Long): List[Long] = - if (n == 1) List(1) else - if (n % 2 == 0) (n::collatz(n / 2)) else - (n::collatz(3 * n + 1)) - -// an alternative that calculates the steps directly -def collatz1(n: Long): Int = - if (n == 1) 1 else - if (n % 2 == 0) (1 + collatz1(n / 2)) else - (1 + collatz1(3 * n + 1)) - - -//(2) -def collatz_max(bnd: Int): Int = { - (for (i <- 1 to bnd) yield collatz(i).length).max -} - - -val bnds = List(10, 100, 1000, 10000, 100000, 1000000, 10000000) - -for (bnd <- bnds) { - val max = collatz_max(bnd) - println(s"In the range of 1 - ${bnd} the maximum steps are ${max}") -} -