-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathprob14.js
47 lines (46 loc) · 1.11 KB
/
prob14.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
var knownCollatz ={} //an array that will hold values of knownCollatz Sequences
// e.g. [ "13": [13, 40, 20..]]
function compEven(n){
return n/2
}
function compOdd(n){
return 3 * n + 1
}
function getCollatzSeq(n){
var result = [n]
var next = n
if(n == 1 || n == 0 ){
return [n]
}
// if(knownCollatz[n]){
// return knownCollatz[n]
// }
if (next % 2 == 0){
// next = result.push(compEven(next))
// knownCollatz[n] = result.concat(getCollatzSeq(compEven(n)))
// return knownCollatz[n]
return result.concat(getCollatzSeq(compEven(n)))
}else{
// knownCollatz[n] = result.concat(getCollatzSeq(compOdd(n)))
// return knownCollatz[n]
return result.concat(getCollatzSeq(compOdd(n)))
}
}
function getLongestCollatz(n){
var longest = 0;
var longestseq = []
var result = 0
for(var i = n ; i > 0; i--){
seq = getCollatzSeq(i)
if(longest < seq.length){
longest = seq.length
longestseq = seq
result = i
}
}
// console.log(longestseq)
console.log(result)
return longestseq
}
// 2 ^ x = 16
// x = log_2(16) = log16/log2