# 1346199 commands with 1000 as starting number # Used to detect when to stop loop INCREASE L # Create a big number (180) to loop many times (number 871 takes the most steps: 178) INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q # Print the initial value PRINT X # Stop if X is 1 initially REPEAT X TIMES ( CLEAR L REPEAT D TIMES ( INCREASE L CLEAR D ) INCREASE D ) # Start the main loop REPEAT Q TIMES ( REPEAT L TIMES ( # Clear variables before re-use CLEAR A CLEAR B CLEAR C CLEAR D CLEAR Y # This needs to be 1 for the odd-even loop to work INCREASE B # Make a copy of X and store it in Y # TODO: optimize because it copies the value so many times each step REPEAT X TIMES ( INCREASE Y ) # Check if X is odd or even, and save the halved value of X in X CLEAR X REPEAT Y TIMES ( REPEAT A TIMES ( INCREASE X 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 ( # Revert X back to original value before it was halved REPEAT X TIMES ( INCREASE X ) INCREASE X # Multiply X by 3 and add 1 REPEAT Y TIMES ( INCREASE X ) REPEAT Y TIMES ( INCREASE X ) 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 ) ) )