INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A
INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A
INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A
INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A
INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A
INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A
INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A
INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A
INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A
INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A
INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A
INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A
INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A
INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A
INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A
INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A INCREASE A
# INCREASE X INCREASE X INCREASE X
PRINT X
REPEAT A TIMES (
# Check if X == 1: if floor(X/2) == 0, then X == 1 (since X >= 1)
CLEAR J
CLEAR V
REPEAT X TIMES (
CLEAR T
INCREASE T
REPEAT V TIMES ( CLEAR T )
CLEAR V
REPEAT T TIMES ( INCREASE V )
CLEAR U
INCREASE U
REPEAT V TIMES ( CLEAR U )
REPEAT U TIMES ( INCREASE J )
)
# If J == 0, then X == 1, so skip processing
# Use flag C: C = 1 means continue, C = 0 means stop
# Check if J == 0: L = 1, REPEAT J TIMES (CLEAR L), L == 1 if J == 0
CLEAR L
INCREASE L
REPEAT J TIMES ( CLEAR L )
# L == 1 if J == 0 (X == 1), L == 0 if J != 0 (X > 1)
# Set C = 1, then if L == 1, clear C
CLEAR C
INCREASE C
REPEAT L TIMES ( CLEAR C )
# C == 0 if L == 1 (X == 1), C == 1 if L == 0 (X > 1)
# Only process if C == 1 (X != 1)
REPEAT C TIMES (
# Compute parity R = X mod 2
CLEAR R
REPEAT X TIMES (
CLEAR T
INCREASE T
REPEAT R TIMES ( CLEAR T )
CLEAR R
REPEAT T TIMES ( INCREASE R )
)
# Save parity to P
CLEAR P
REPEAT R TIMES ( INCREASE P )
# If X is even (P == 0): X = X / 2
CLEAR G
INCREASE G
REPEAT P TIMES ( CLEAR G )
REPEAT G TIMES (
# Compute I = floor(X/2)
CLEAR I
CLEAR S
REPEAT X TIMES (
CLEAR T
INCREASE T
REPEAT S TIMES ( CLEAR T )
CLEAR S
REPEAT T TIMES ( INCREASE S )
CLEAR U
INCREASE U
REPEAT S TIMES ( CLEAR U )
REPEAT U TIMES ( INCREASE I )
)
CLEAR X
REPEAT I TIMES ( INCREASE X )
PRINT X
)
# If X is odd (P == 1): X = X * 3 + 1
REPEAT P TIMES (
# Compute Y = X * 3 + 1
CLEAR Y
REPEAT X TIMES ( INCREASE Y INCREASE Y INCREASE Y )
INCREASE Y
CLEAR X
REPEAT Y TIMES ( INCREASE X )
PRINT X
)
)
)