17 lines
470 B
Python
17 lines
470 B
Python
def hailstone(n):
|
|
seq = [n]
|
|
while n > 1:
|
|
n = 3 * n + 1 if n & 1 else n // 2
|
|
seq.append(n)
|
|
return seq
|
|
|
|
|
|
if __name__ == '__main__':
|
|
h = hailstone(27)
|
|
assert (len(h) == 112
|
|
and h[:4] == [27, 82, 41, 124]
|
|
and h[-4:] == [8, 4, 2, 1])
|
|
max_length, n = max((len(hailstone(i)), i) for i in range(1, 100_000))
|
|
print(f"Maximum length {max_length} was found for hailstone({n}) "
|
|
f"for numbers <100,000")
|