# 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 ) ) )