| author | Christian Urban <christian.urban@kcl.ac.uk> | 
| Mon, 02 Nov 2020 02:31:44 +0000 | |
| changeset 347 | 0b727d1a8184 | 
| parent 345 | 69b39df6ad4d | 
| permissions | -rw-r--r-- | 
| 343 | 1 | // Preliminary Part about the 3n+1 conjecture | 
| 2 | //============================================ | |
| 11 
417869f65585
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: diff
changeset | 3 | |
| 281 | 4 | object CW6a {
 | 
| 11 
417869f65585
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: diff
changeset | 5 | |
| 15 | 6 | //(1) Complete the collatz function below. It should | 
| 7 | // recursively calculate the number of steps needed | |
| 8 | // until the collatz series reaches the number 1. | |
| 127 | 9 | // If needed, you can use an auxiliary function that | 
| 15 | 10 | // performs the recursion. The function should expect | 
| 24 
66b97f9a40f8
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
18diff
changeset | 11 | // arguments in the range of 1 to 1 Million. | 
| 11 
417869f65585
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: diff
changeset | 12 | |
| 343 | 13 | def collatz(n: Long) : Long = ??? | 
| 11 
417869f65585
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: diff
changeset | 14 | |
| 
417869f65585
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: diff
changeset | 15 | |
| 266 | 16 | //(2) Complete the collatz_max function below. It should | 
| 17 | // calculate how many steps are needed for each number | |
| 18 | // from 1 up to a bound and then calculate the maximum number of | |
| 19 | // steps and the corresponding number that needs that many | |
| 20 | // steps. Again, you should expect bounds in the range of 1 | |
| 21 | // up to 1 Million. The first component of the pair is | |
| 22 | // the maximum number of steps and the second is the | |
| 23 | // corresponding number. | |
| 15 | 24 | |
| 343 | 25 | def collatz_max(bnd: Long) : (Long, Long) = ??? | 
| 26 | ||
| 27 | //(3) Implement a function that calculates the last_odd | |
| 28 | // number in a collatz series. For this implement an | |
| 29 | // is_pow_of_two function which tests whether a number | |
| 30 | // is a power of two. The function is_hard calculates | |
| 31 | // whether 3n + 1 is a power of two. Again you can | |
| 32 | // assume the input ranges between 1 and 1 Million, | |
| 33 | // and also assume that the input of last_odd will not | |
| 34 | // be a power of 2. | |
| 35 | ||
| 36 | def is_pow_of_two(n: Long) : Boolean = ??? | |
| 37 | ||
| 38 | def is_hard(n: Long) : Boolean = ??? | |
| 39 | ||
| 40 | def last_odd(n: Long) : Long = ??? | |
| 11 
417869f65585
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: diff
changeset | 41 | |
| 281 | 42 | } | 
| 11 
417869f65585
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: diff
changeset | 43 |