33 lines
793 B
Text
33 lines
793 B
Text
hailstone = { num |
|
|
sequence = [num]
|
|
while { num != 1 }
|
|
{ true? num % 2 == 0
|
|
{ num = num / 2 }
|
|
{ num = num * 3 + 1 }
|
|
sequence << num
|
|
}
|
|
|
|
sequence
|
|
}
|
|
|
|
#Check sequence for 27
|
|
seq = hailstone 27
|
|
true? (seq[0,3] == [27 82 41 124] && seq[-1, -4] == [8 4 2 1])
|
|
{ p "Sequence for 27 is correct" }
|
|
{ p "Sequence for 27 is not correct!" }
|
|
|
|
#Find longest sequence for numbers < 100,000
|
|
longest = [number: 0 length: 0]
|
|
|
|
1.to 99999 { index |
|
|
seq = hailstone index
|
|
true? seq.length > longest[:length]
|
|
{ longest[:length] = seq.length
|
|
longest[:number] = index
|
|
p "Longest so far: #{index} @ #{longest[:length]} elements"
|
|
}
|
|
|
|
index = index + 1
|
|
}
|
|
|
|
p "Longest was starting from #{longest[:number]} and was of length #{longest[:length]}"
|