# Outputting the initial input PRINT X # Remporary values for checking if inital value is 1 CLEAR A CLEAR B INCREASE A # Chekcing if X == 1 REPEAT X TIMES ( REPEAT B TIMES ( # More than 1 so L is set CLEAR B # Setting up the max loop count of 180 INCREASE L INCREASE L INCREASE L INCREASE L INCREASE L INCREASE L INCREASE L INCREASE L INCREASE L INCREASE L INCREASE L INCREASE L # L = 18 INCREASE L INCREASE L INCREASE L INCREASE L INCREASE L INCREASE L REPEAT L TIMES ( INCREASE L INCREASE L INCREASE L INCREASE L INCREASE L INCREASE L INCREASE L INCREASE L INCREASE L # L += 9 ) ) REPEAT A TIMES ( # Equal to 1 so L value is left empty CLEAR A INCREASE B ) ) # Setting start values INCREASE R # The "running" variable of the programm INCREASE Q # Boolean for current odd # Setting the while loop with max iteration count REPEAT L TIMES ( REPEAT R TIMES ( # Setting temporary variables for mod 2 CLEAR A INCREASE A # Calculating X % 2 and storing result in Q REPEAT Q TIMES ( REPEAT X TIMES ( # Setting B to 1 CLEAR B INCREASE B # Checking if odd/even count REPEAT A TIMES ( # Odd INCREASE Q CLEAR A CLEAR B ) REPEAT B TIMES ( # Even CLEAR Q INCREASE A ) ) ) # Checking if X is odd or even CLEAR A INCREASE A REPEAT Q TIMES ( # Odd CLEAR A # Performing 3x + 1 REPEAT X TIMES ( INCREASE X INCREASE X ) INCREASE X ) REPEAT A TIMES ( # Even # Setting temporary variables for division CLEAR T CLEAR A INCREASE T INCREASE A # Performing x / 2 REPEAT X TIMES ( # Resetting X on first iteration REPEAT T TIMES ( CLEAR X CLEAR T ) # Setting B to 1 CLEAR B INCREASE B # Checking if odd/even count REPEAT A TIMES ( # Odd CLEAR A CLEAR B ) REPEAT B TIMES ( # Even INCREASE X INCREASE A ) ) # Setting Q for check CLEAR Q INCREASE Q ) # Outputting current value PRINT X # Setting temporary variables for break check CLEAR A CLEAR B INCREASE A # Checking if X == 1 REPEAT X TIMES ( REPEAT B TIMES ( CLEAR B INCREASE R ) REPEAT A TIMES ( CLEAR A INCREASE B CLEAR R ) ) ) )