link printf procedure main() every put(environment := [], hailenv(1 to 12,0)) # setup environments printf("Sequences:\n") while (e := !environment).sequence > 1 do { every hailstep(!environment) printf("\n") } printf("\nCounts:\n") every printf("%4d ",(!environment).count) printf("\n") end record hailenv(sequence,count) procedure hailstep(env) printf("%4d ",env.sequence) if env.sequence ~= 1 then { env.count +:= 1 if env.sequence % 2 = 0 then env.sequence /:= 2 else env.sequence := 3 * env.sequence + 1 } end