# J = 4 INCREASE J INCREASE J INCREASE J INCREASE J # I = 174 (maximum needed is 178) REPEAT J TIMES ( INCREASE J REPEAT J TIMES ( REPEAT J TIMES ( INCREASE I ) ) ) # add the remaining 4 INCREASE I INCREASE I INCREASE I INCREASE I # V = 3 for the times function (3*X) INCREASE V INCREASE V INCREASE V REPEAT I TIMES ( # Set Q to 1 to enable calculating CLEAR Q INCREASE Q REPEAT P TIMES ( CLEAR Q ) # Stop calculating if Q = 0 REPEAT Q TIMES ( PRINT X # Clear variables for calculation CLEAR A CLEAR B CLEAR C # B = 1 for parity check INCREASE B # Parity check loop determines if X is even or odd # After X iterations: # A = 1 if X is odd, 0 if even # B = 1 if X is even, 0 if odd # C = X // 2 REPEAT X TIMES ( # Swap A and B using T CLEAR T REPEAT A TIMES ( INCREASE T ) # T = A CLEAR A REPEAT B TIMES ( INCREASE A ) # A = B CLEAR B REPEAT T TIMES ( INCREASE B ) # B = T # Increment C if B = 1 REPEAT B TIMES ( INCREASE C ) ) # Check if X = 1, E = 1 CLEAR E INCREASE E REPEAT C TIMES ( CLEAR E ) # For X = 1, C = 0 so E = 1 | for X > 1, C > 0 so E = 0 REPEAT E TIMES ( INCREASE P ) # If X = 1, set P = 1 to stop future calculation # Decide whether to update X: Q = 1 unless X = 1 CLEAR Q INCREASE Q REPEAT E TIMES ( CLEAR Q ) # Decide whether to update X: Q = 1 unless X = 1 # if Q = 1 update X to next Collatz number REPEAT Q TIMES ( CLEAR Z # even X: Z = C = X // 2 REPEAT C TIMES ( INCREASE Z ) # odd X: Z = 3 * X + 1 # (V = 3) REPEAT A TIMES ( CLEAR Z # Z = 3 * X REPEAT X TIMES ( REPEAT V TIMES ( INCREASE Z ) ) INCREASE Z # Add 1 to make 3 * X + 1 ) # Set X to Z for next iteration CLEAR X REPEAT Z TIMES ( INCREASE X ) ) ) )