equal
deleted
inserted
replaced
4 // generate jar with |
4 // generate jar with |
5 // > scala -d collatz.jar collatz.scala |
5 // > scala -d collatz.jar collatz.scala |
6 |
6 |
7 object CW6a { // for purposes of generating a jar |
7 object CW6a { // for purposes of generating a jar |
8 |
8 |
9 /* |
|
10 def collatz(n: Long): Long = |
9 def collatz(n: Long): Long = |
11 if (n == 1) 0 else |
10 if (n == 1) 0 else |
12 if (n % 2 == 0) 1 + collatz(n / 2) else |
11 if (n % 2 == 0) 1 + collatz(n / 2) else |
13 1 + collatz(3 * n + 1) |
12 1 + collatz(3 * n + 1) |
14 */ |
|
15 |
13 |
16 def aux(n: Long, acc: Long) : Long = |
|
17 if (n == 1) acc else |
|
18 if (n % 2 == 0) aux(n / 2, acc + 1) else |
|
19 aux(3 * n + 1, acc + 1) |
|
20 |
|
21 |
|
22 def collatz(n: Long): Long = aux(n, 0) |
|
23 |
14 |
24 def collatz_max(bnd: Long): (Long, Long) = { |
15 def collatz_max(bnd: Long): (Long, Long) = { |
25 val all = for (i <- (1L to bnd)) yield (collatz(i), i) |
16 val all = for (i <- (1L to bnd)) yield (collatz(i), i) |
26 all.maxBy(_._1) |
17 all.maxBy(_._1) |
27 } |
18 } |