37 lines
556 B
Plaintext
37 lines
556 B
Plaintext
local hailstone:
|
|
swap [ over ]
|
|
while < 1 dup:
|
|
if % over 2:
|
|
#odd
|
|
++ * 3
|
|
else:
|
|
#even
|
|
/ swap 2
|
|
swap push-through rot dup
|
|
drop
|
|
|
|
if = (name) :(main):
|
|
local :h27 hailstone 27
|
|
!. = 112 len h27
|
|
!. = 27 h27! 0
|
|
!. = 82 h27! 1
|
|
!. = 41 h27! 2
|
|
!. = 124 h27! 3
|
|
!. = 8 h27! 108
|
|
!. = 4 h27! 109
|
|
!. = 2 h27! 110
|
|
!. = 1 h27! 111
|
|
|
|
local :max 0
|
|
local :maxlen 0
|
|
for i range 1 99999:
|
|
dup len hailstone i
|
|
if < maxlen:
|
|
set :maxlen
|
|
set :max i
|
|
else:
|
|
drop
|
|
!print( "number: " to-str max ", length: " to-str maxlen )
|
|
else:
|
|
@hailstone
|