RosettaCodeData/Task/Hailstone-sequence/Ursalang/hailstone-sequence.ursa
2024-10-16 18:07:41 -07:00

33 lines
738 B
Text

let hailstone = fn(n_) {
var n = n_
let steps = [n]
loop {
if n < 2 { break steps }
n := (if n % 2 == 0 { n / 2 } else { n * 3 + 1 })
steps.push(n)
}
}
let twentySeven = hailstone(27)
print("The Hailstone sequence for 27 starts with:")
print(twentySeven.slice(0, 4))
print("and ends with:")
print(twentySeven.slice(-4))
print("and its length is:")
print(twentySeven.len())
print("Checking sequences up to 100,000")
var longest = 0
var longestLen = 0
for i in range(100000) {
let len = hailstone(i).len()
if len > longestLen {
longest := i
longestLen := len
}
if i % 10000 == 0 {print(i)}
}
print("The longest sequence under 100,000 is for:")
print(longest)
print("and has length:")
print(longestLen)