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)