27 lines
567 B
Plaintext
27 lines
567 B
Plaintext
func hailstone(n) {
|
||
gather {
|
||
while (n > 1) {
|
||
take(n)
|
||
n = (n.is_even ? n/2 : (3*n + 1))
|
||
}
|
||
take(1)
|
||
}
|
||
}
|
||
|
||
if (__FILE__ == __MAIN__) { # true when not imported
|
||
var seq = hailstone(27)
|
||
say "hailstone(27) - #{seq.len} elements: #{seq.ft(0, 3)} [...] #{seq.ft(-4)}"
|
||
|
||
var n = 0
|
||
var max = 0
|
||
100_000.times { |i|
|
||
var seq = hailstone(i)
|
||
if (seq.len > max) {
|
||
max = seq.len
|
||
n = i
|
||
}
|
||
}
|
||
|
||
say "Longest sequence is for #{n}: #{max}"
|
||
}
|