# A = 128
CLEAR A
INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A
INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A
INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A
INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A
INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A
INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A
INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A
INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A
INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A
INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A
INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A
INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A
INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A
INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A
INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A
INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A
CLEAR D
REPEAT A TIMES (
CLEAR I
INCREASE I
REPEAT D TIMES ( CLEAR I )
REPEAT I TIMES ( PRINT X )
REPEAT I TIMES (
CLEAR T
CLEAR H
# compute parity T and H in one pass over X
REPEAT X TIMES (
CLEAR Z
INCREASE Z
REPEAT T TIMES ( CLEAR Z )
CLEAR T
REPEAT Z TIMES ( INCREASE T )
CLEAR Z
INCREASE Z
REPEAT T TIMES ( CLEAR Z )
REPEAT Z TIMES ( INCREASE H )
)
# O := (X==1) = (H==0 and T==1)
CLEAR O
CLEAR Z
INCREASE Z
REPEAT H TIMES ( CLEAR Z )
REPEAT Z TIMES ( INCREASE O )
CLEAR Z
INCREASE Z
REPEAT T TIMES ( CLEAR Z )
REPEAT Z TIMES ( CLEAR O )
REPEAT O TIMES ( INCREASE D )
)
CLEAR I
INCREASE I
REPEAT D TIMES ( CLEAR I )
REPEAT I TIMES (
# even: X := H
CLEAR Z
INCREASE Z
REPEAT T TIMES ( CLEAR Z )
REPEAT Z TIMES (
CLEAR X
REPEAT H TIMES ( INCREASE X )
)
# odd: X := 3*X + 1 (fix: do NOT compress to (3X+1)/2)
REPEAT T TIMES (
CLEAR F
INCREASE F
REPEAT X TIMES (
REPEAT F TIMES ( CLEAR X )
CLEAR F
INCREASE X
INCREASE X
INCREASE X
)
INCREASE X
)
)
)