# A = 128
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
# gate
INCREASE C
REPEAT A TIMES (
REPEAT C TIMES (
PRINT X
# I=floor(X/2), R=parity(X)
CLEAR R
CLEAR I
REPEAT X TIMES (
CLEAR T
INCREASE T
REPEAT R TIMES ( CLEAR T )
CLEAR R
REPEAT T TIMES ( INCREASE R )
CLEAR U
INCREASE U
REPEAT R TIMES ( CLEAR U )
REPEAT U TIMES ( INCREASE I )
)
# M = [X==1] = (I==0 AND R==1)
INCREASE L
REPEAT I TIMES ( CLEAR L )
CLEAR M
REPEAT L TIMES ( REPEAT R TIMES ( INCREASE M ) )
# T := 1 - M (do step only if not at 1)
CLEAR T
INCREASE T
REPEAT M TIMES ( CLEAR T )
# N := 1 - R (even?)
CLEAR N
INCREASE N
REPEAT R TIMES ( CLEAR N )
# step (one Collatz move)
REPEAT T TIMES (
# odd: X := 3X+1
REPEAT R TIMES (
REPEAT X TIMES ( INCREASE X INCREASE X )
INCREASE X
)
# even: X := I
REPEAT N TIMES (
CLEAR X
REPEAT I TIMES ( INCREASE X )
)
)
# latch C := T (stop after printing 1)
CLEAR C
REPEAT T TIMES ( INCREASE C )
)
)