curriculum/challenges/english/blocks/rosetta-code-challenges/595608ff8bcd7a50bd490181.md
The Hailstone sequence of numbers can be generated from a starting positive integer, n by:
n is 1 then the sequence endsn is even then the next n of the sequence = n/2n is odd then the next n of the sequence = (3 * n) + 1The (unproven) Collatz conjecture is that the hailstone sequence for any starting number always terminates.
The hailstone sequence is also known as hailstone numbers (because the values are usually subject to multiple descents and ascents like hailstones in a cloud), or as the Collatz sequence.
limit which has the longest hailstone sequence and that sequence's length. (But don't show the actual sequence!)hailstoneSequence should be a function.
assert(typeof hailstoneSequence === 'function');
hailstoneSequence(30) should return an array.
assert(Array.isArray(hailstoneSequence(30)));
hailstoneSequence(30) should return [27, 112].
assert.deepEqual(hailstoneSequence(30), [27, 112]);
hailstoneSequence(50000) should return [35655, 324].
assert.deepEqual(hailstoneSequence(50000), [35655, 324]);
hailstoneSequence(100000) should return [77031, 351].
assert.deepEqual(hailstoneSequence(100000), [77031, 351]);
function hailstoneSequence(limit) {
const res = [];
return res;
}
function hailstoneSequence (limit) {
function hailstone(n) {
const seq = [n];
while (n > 1) {
n = n % 2 ? 3 * n + 1 : n / 2;
seq.push(n);
}
return seq;
}
let n = 0;
let max = 0;
for (let i = limit; --i;) {
const seq = hailstone(i);
const sLen = seq.length;
if (sLen > max) {
n = i;
max = sLen;
}
}
return [n, max];
}