diff -r a2ac7e3fa330 -r 40657f9a4e4a testing1/collatz.scala --- a/testing1/collatz.scala Sat Oct 31 16:23:12 2020 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,37 +0,0 @@ -object CW6a { - -//(1) Complete the collatz function below. It should -// recursively calculate the number of steps needed -// until the collatz series reaches the number 1. -// If needed, you can use an auxiliary function that -// performs the recursion. The function should expect -// arguments in the range of 1 to 1 Million. -def stepsCounter(n: Long, s: Long) : Long = n match{ - case 1 => s - case n if(n%2==0) => stepsCounter(n/2,s+1) - case _ => stepsCounter(3*n+1, s+1) -} - -def collatz(n: Long) : Long = n match { - case n if(n>0) => stepsCounter(n,0) - case n if(n<=0) => stepsCounter(1,0) -} - - - -//(2) Complete the collatz_max function below. It should -// calculate how many steps are needed for each number -// from 1 up to a bound and then calculate the maximum number of -// steps and the corresponding number that needs that many -// steps. Again, you should expect bounds in the range of 1 -// up to 1 Million. The first component of the pair is -// the maximum number of steps and the second is the -// corresponding number. - -def collatz_max(bnd: Long) : (Long, Long) = { - val allCollatz = for(i<-1L until bnd) yield collatz(i) - val pair = (allCollatz.max, (allCollatz.indexOf(allCollatz.max) +1).toLong) - pair -} - -}