# Constant that is used for the multiplication INCREASE K INCREASE K # Used to detect when to stop loop INCREASE L # Create a big number (491520) to loop many times INCREASE H INCREASE H INCREASE H INCREASE H INCREASE H INCREASE H INCREASE H INCREASE H INCREASE H INCREASE H INCREASE H INCREASE H INCREASE H INCREASE H INCREASE H REPEAT H TIMES ( REPEAT H TIMES ( INCREASE H ) ) PRINT H # Print the initial value PRINT X REPEAT H TIMES ( REPEAT L TIMES ( # Clear variables before re-use CLEAR A CLEAR B CLEAR C CLEAR D CLEAR E CLEAR O CLEAR V CLEAR Y # These need to both be 1 for the loops to work INCREASE O INCREASE B # Make a copy of X and store it in Y REPEAT X TIMES ( INCREASE Y ) # Check if X is odd or even, and store the halved value of X in V REPEAT X TIMES ( REPEAT A TIMES ( INCREASE V INCREASE C CLEAR A ) REPEAT B TIMES ( INCREASE A CLEAR B ) REPEAT C TIMES ( INCREASE B CLEAR C ) ) # This only runs if X was odd because in that case A is 1 instead of 0 REPEAT A TIMES ( # Clear the value of 1 so the "Set X to the halved value" loop doesn't run CLEAR O # Revert X back to original value CLEAR X REPEAT Y TIMES ( INCREASE X ) # Multiply X by 3 and add 1 REPEAT K TIMES ( REPEAT Y TIMES ( INCREASE X ) ) INCREASE X ) # Set X to the halved value if X was even at the beginning REPEAT O TIMES ( CLEAR X REPEAT V TIMES ( INCREASE X ) ) # Print the resulting value PRINT X # Stop if X is 1 REPEAT X TIMES ( CLEAR L REPEAT D TIMES ( INCREASE L CLEAR D ) INCREASE D ) ) )