Hofstadter Figure-Figure sequences: Difference between revisions
Content added Content deleted
(Added JavaScript) |
|||
Line 575: | Line 575: | ||
(1+i.1000) -: /:~ (ffr 1+i.40), ffs 1+i.960 |
(1+i.1000) -: /:~ (ffr 1+i.40), ffs 1+i.960 |
||
1</lang> |
1</lang> |
||
=={{header|JavaScript}}== |
|||
Translated from Ruby. |
|||
<lang JavaScript>var R = [null, 1]; |
|||
var S = [null, 2]; |
|||
var extend_sequences = function (n) { |
|||
var current = Math.max(R[R.length-1],S[S.length-1]); |
|||
var i; |
|||
while (R.length <= n || S.length <= n) { |
|||
i = Math.min(R.length, S.length) - 1; |
|||
current += 1; |
|||
if (current === R[i] + S[i]) { |
|||
R.push(current); |
|||
} else { |
|||
S.push(current); |
|||
} |
|||
} |
|||
} |
|||
var ffr = function(n) { |
|||
extend_sequences(n); |
|||
return R[n]; |
|||
}; |
|||
var ffs = function(n) { |
|||
extend_sequences(n); |
|||
return S[n]; |
|||
}; |
|||
for (var i = 1; i <=10; i += 1) { |
|||
console.log('R('+ i +') = ' + ffr(i)); |
|||
} |
|||
var int_array = []; |
|||
for (var i = 1; i <= 40; i += 1) { |
|||
int_array.push(ffr(i)); |
|||
} |
|||
for (var i = 1; i <= 960; i += 1) { |
|||
int_array.push(ffs(i)); |
|||
} |
|||
int_array.sort(function(a,b){return a-b;}); |
|||
for (var i = 1; i <= 1000; i += 1) { |
|||
if (int_array[i-1] !== i) { |
|||
throw "Something's wrong!" |
|||
} else { console.log("1000 integer check ok."); } |
|||
}</lang> |
|||
Output: |
|||
<pre>R(1) = 1 |
|||
R(2) = 3 |
|||
R(3) = 7 |
|||
R(4) = 12 |
|||
R(5) = 18 |
|||
R(6) = 26 |
|||
R(7) = 35 |
|||
R(8) = 45 |
|||
R(9) = 56 |
|||
R(10) = 69 |
|||
1000 integer check ok.</pre> |
|||
=={{header|MATLAB}} / {{header|Octave}}== |
=={{header|MATLAB}} / {{header|Octave}}== |