diff -r 0587ef444547 -r 48de09728447 Attic/live.scala --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Attic/live.scala Sat Mar 11 23:24:15 2023 +0000 @@ -0,0 +1,34 @@ +import scala.annotation.tailrec + + +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)) + +def collatz1(n: Long): Int = + if (n == 1) 1 else + if (n % 2 == 0) (1 + collatz1(n / 2)) else + (1 + collatz1(3 * n + 1)) + +@tailrec +def collatz2(n: Long, acc: Int): Int = + if (n == 1) acc else + if (n % 2 == 0) collatz2(n / 2, acc + 1) else + collatz2(3 * n + 1, acc + 1) + +collatz(1) +collatz(2) +collatz(3) +collatz(4) +collatz(5) +collatz(6).length +collatz(7) +collatz(8) +collatz(9).length +collatz(100000) +println((for (i <- 1 to 10000000) yield collatz(i).length).max) +println((for (i <- 1 to 10000000) yield collatz1(i)).max) +println((for (i <- 1 to 10000000) yield collatz2(i, 1)).max) +println((for (i <- (1 to 10000000).par) yield collatz2(i, 1)).max) +