diff -r 2d9defa8ad7f -r 52713e632ac0 progs/collatz_sol.scala --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/progs/collatz_sol.scala Tue Nov 08 10:30:42 2016 +0000 @@ -0,0 +1,31 @@ +// Part 1 about the 3n+1 conceture +//================================= + + +//(1) Complete the collatz function below. It should +//recursively calculates the number of steps needed +//number until a series ends with 1 + +def collatz(n: Long): List[Long] = ... + + +// 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}") +} +