| author | Christian Urban <christian.urban@kcl.ac.uk> | 
| Sat, 08 Oct 2022 00:30:51 +0100 | |
| changeset 424 | 3c81352ec565 | 
| parent 396 | ea39bbc8d98d | 
| child 425 | 6e990ae2c6a3 | 
| permissions | -rw-r--r-- | 
| 396 | 1  | 
// Core Part 1 about the 3n+1 conjecture  | 
| 343 | 2  | 
//============================================  | 
| 
11
 
417869f65585
updated
 
Christian Urban <christian dot urban at kcl dot ac dot uk> 
parents:  
diff
changeset
 | 
3  | 
|
| 396 | 4  | 
object C1 {
 | 
| 
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: 
18 
diff
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  | 
|
| 396 | 44  | 
|
45  |