# Total commands used 937 # Conversion to base 2 uses 181 commands # Conversion to base 10 uses 287 commands # # X /= 2 uses 54 commands # X = 3X + 1 uses 383 commands # Z -> 180 uses 18 commands PRINT X #----------------------------------------------------------------------------- # Convert X to base 2 #----------------------------------------------------------------------------- REPEAT X TIMES ( INCREASE S ) REPEAT S TIMES ( INCREASE Z REPEAT A TIMES ( CLEAR Z CLEAR A INCREASE Y ) REPEAT Z TIMES ( CLEAR Z INCREASE A ) ) CLEAR S REPEAT Y TIMES ( INCREASE Z REPEAT B TIMES ( CLEAR Z CLEAR B INCREASE S ) REPEAT Z TIMES ( CLEAR Z INCREASE B ) ) CLEAR Y REPEAT S TIMES ( INCREASE Z REPEAT C TIMES ( CLEAR Z CLEAR C INCREASE Y ) REPEAT Z TIMES ( CLEAR Z INCREASE C ) ) CLEAR S REPEAT Y TIMES ( INCREASE Z REPEAT D TIMES ( CLEAR Z CLEAR D INCREASE S ) REPEAT Z TIMES ( CLEAR Z INCREASE D ) ) CLEAR Y REPEAT S TIMES ( INCREASE Z REPEAT E TIMES ( CLEAR Z CLEAR E INCREASE Y ) REPEAT Z TIMES ( CLEAR Z INCREASE E ) ) CLEAR S REPEAT Y TIMES ( INCREASE Z REPEAT F TIMES ( CLEAR Z CLEAR F INCREASE S ) REPEAT Z TIMES ( CLEAR Z INCREASE F ) ) CLEAR Y REPEAT S TIMES ( INCREASE Z REPEAT G TIMES ( CLEAR Z CLEAR G INCREASE Y ) REPEAT Z TIMES ( CLEAR Z INCREASE G ) ) CLEAR S REPEAT Y TIMES ( INCREASE Z REPEAT H TIMES ( CLEAR Z CLEAR H INCREASE S ) REPEAT Z TIMES ( CLEAR Z INCREASE H ) ) CLEAR Y REPEAT S TIMES ( INCREASE Z REPEAT I TIMES ( CLEAR Z CLEAR I INCREASE Y ) REPEAT Z TIMES ( CLEAR Z INCREASE I ) ) CLEAR S REPEAT Y TIMES ( INCREASE Z REPEAT J TIMES ( CLEAR Z CLEAR J INCREASE S ) REPEAT Z TIMES ( CLEAR Z INCREASE J ) ) CLEAR Y REPEAT S TIMES ( INCREASE Z REPEAT K TIMES ( CLEAR Z CLEAR K INCREASE Y ) REPEAT Z TIMES ( CLEAR Z INCREASE K ) ) CLEAR S REPEAT Y TIMES ( INCREASE Z REPEAT L TIMES ( CLEAR Z CLEAR L INCREASE S ) REPEAT Z TIMES ( CLEAR Z INCREASE L ) ) CLEAR Y REPEAT S TIMES ( INCREASE Z REPEAT M TIMES ( CLEAR Z CLEAR M INCREASE Y ) REPEAT Z TIMES ( CLEAR Z INCREASE M ) ) CLEAR S REPEAT Y TIMES ( INCREASE Z REPEAT N TIMES ( CLEAR Z CLEAR N INCREASE S ) REPEAT Z TIMES ( CLEAR Z INCREASE N ) ) CLEAR Y REPEAT S TIMES ( INCREASE Z REPEAT O TIMES ( CLEAR Z CLEAR O INCREASE Y ) REPEAT Z TIMES ( CLEAR Z INCREASE O ) ) CLEAR S REPEAT Y TIMES ( INCREASE Z REPEAT P TIMES ( CLEAR Z CLEAR P INCREASE S ) REPEAT Z TIMES ( CLEAR Z INCREASE P ) ) CLEAR Y REPEAT S TIMES ( INCREASE Z REPEAT Q TIMES ( CLEAR Z CLEAR Q INCREASE Y ) REPEAT Z TIMES ( CLEAR Z INCREASE Q ) ) CLEAR S CLEAR Y #----------------------------------------------------------------------------- # Check if X = 1 #----------------------------------------------------------------------------- INCREASE S REPEAT B TIMES ( CLEAR S ) REPEAT C TIMES ( CLEAR S ) REPEAT D TIMES ( CLEAR S ) REPEAT E TIMES ( CLEAR S ) REPEAT F TIMES ( CLEAR S ) REPEAT G TIMES ( CLEAR S ) REPEAT H TIMES ( CLEAR S ) REPEAT I TIMES ( CLEAR S ) REPEAT J TIMES ( CLEAR S ) REPEAT K TIMES ( CLEAR S ) REPEAT L TIMES ( CLEAR S ) REPEAT M TIMES ( CLEAR S ) REPEAT N TIMES ( CLEAR S ) REPEAT O TIMES ( CLEAR S ) REPEAT P TIMES ( CLEAR S ) REPEAT Q TIMES ( CLEAR S ) INCREASE Y REPEAT S TIMES ( CLEAR Y ) CLEAR S #----------------------------------------------------------------------------- # Z = 180 #----------------------------------------------------------------------------- INCREASE Z INCREASE S INCREASE S REPEAT Z TIMES ( REPEAT S TIMES ( INCREASE Z ) ) REPEAT Z TIMES ( REPEAT S TIMES ( INCREASE Z ) ) INCREASE S REPEAT Z TIMES ( REPEAT S TIMES ( INCREASE Z ) ) INCREASE S REPEAT Z TIMES ( REPEAT S TIMES ( INCREASE Z ) ) CLEAR S REPEAT Z TIMES ( REPEAT Y TIMES ( INCREASE R REPEAT A TIMES ( CLEAR R #----------------------------------------------------------------------------- # X = 3X + 1 #----------------------------------------------------------------------------- INCREASE U REPEAT A TIMES ( CLEAR U INCREASE S ) REPEAT U TIMES ( CLEAR U INCREASE T ) REPEAT A TIMES ( INCREASE U ) REPEAT B TIMES ( INCREASE U ) REPEAT S TIMES ( INCREASE U ) CLEAR A REPEAT T TIMES ( INCREASE A ) CLEAR S CLEAR T CLEAR V REPEAT U TIMES ( INCREASE V REPEAT T TIMES ( CLEAR T CLEAR V INCREASE S ) REPEAT V TIMES ( INCREASE T CLEAR V ) ) CLEAR U REPEAT B TIMES ( INCREASE U ) REPEAT C TIMES ( INCREASE U ) REPEAT S TIMES ( INCREASE U ) CLEAR B REPEAT T TIMES ( INCREASE B ) CLEAR S CLEAR T CLEAR V REPEAT U TIMES ( INCREASE V REPEAT T TIMES ( CLEAR T CLEAR V INCREASE S ) REPEAT V TIMES ( INCREASE T CLEAR V ) ) CLEAR U REPEAT C TIMES ( INCREASE U ) REPEAT D TIMES ( INCREASE U ) REPEAT S TIMES ( INCREASE U ) CLEAR C REPEAT T TIMES ( INCREASE C ) CLEAR S CLEAR T CLEAR V REPEAT U TIMES ( INCREASE V REPEAT T TIMES ( CLEAR T CLEAR V INCREASE S ) REPEAT V TIMES ( INCREASE T CLEAR V ) ) CLEAR U REPEAT D TIMES ( INCREASE U ) REPEAT E TIMES ( INCREASE U ) REPEAT S TIMES ( INCREASE U ) CLEAR D REPEAT T TIMES ( INCREASE D ) CLEAR S CLEAR T CLEAR V REPEAT U TIMES ( INCREASE V REPEAT T TIMES ( CLEAR T CLEAR V INCREASE S ) REPEAT V TIMES ( INCREASE T CLEAR V ) ) CLEAR U REPEAT E TIMES ( INCREASE U ) REPEAT F TIMES ( INCREASE U ) REPEAT S TIMES ( INCREASE U ) CLEAR E REPEAT T TIMES ( INCREASE E ) CLEAR S CLEAR T CLEAR V REPEAT U TIMES ( INCREASE V REPEAT T TIMES ( CLEAR T CLEAR V INCREASE S ) REPEAT V TIMES ( INCREASE T CLEAR V ) ) CLEAR U REPEAT F TIMES ( INCREASE U ) REPEAT G TIMES ( INCREASE U ) REPEAT S TIMES ( INCREASE U ) CLEAR F REPEAT T TIMES ( INCREASE F ) CLEAR S CLEAR T CLEAR V REPEAT U TIMES ( INCREASE V REPEAT T TIMES ( CLEAR T CLEAR V INCREASE S ) REPEAT V TIMES ( INCREASE T CLEAR V ) ) CLEAR U REPEAT G TIMES ( INCREASE U ) REPEAT H TIMES ( INCREASE U ) REPEAT S TIMES ( INCREASE U ) CLEAR G REPEAT T TIMES ( INCREASE G ) CLEAR S CLEAR T CLEAR V REPEAT U TIMES ( INCREASE V REPEAT T TIMES ( CLEAR T CLEAR V INCREASE S ) REPEAT V TIMES ( INCREASE T CLEAR V ) ) CLEAR U REPEAT H TIMES ( INCREASE U ) REPEAT I TIMES ( INCREASE U ) REPEAT S TIMES ( INCREASE U ) CLEAR H REPEAT T TIMES ( INCREASE H ) CLEAR S CLEAR T CLEAR V REPEAT U TIMES ( INCREASE V REPEAT T TIMES ( CLEAR T CLEAR V INCREASE S ) REPEAT V TIMES ( INCREASE T CLEAR V ) ) CLEAR U REPEAT I TIMES ( INCREASE U ) REPEAT J TIMES ( INCREASE U ) REPEAT S TIMES ( INCREASE U ) CLEAR I REPEAT T TIMES ( INCREASE I ) CLEAR S CLEAR T CLEAR V REPEAT U TIMES ( INCREASE V REPEAT T TIMES ( CLEAR T CLEAR V INCREASE S ) REPEAT V TIMES ( INCREASE T CLEAR V ) ) CLEAR U REPEAT J TIMES ( INCREASE U ) REPEAT K TIMES ( INCREASE U ) REPEAT S TIMES ( INCREASE U ) CLEAR J REPEAT T TIMES ( INCREASE J ) CLEAR S CLEAR T CLEAR V REPEAT U TIMES ( INCREASE V REPEAT T TIMES ( CLEAR T CLEAR V INCREASE S ) REPEAT V TIMES ( INCREASE T CLEAR V ) ) CLEAR U REPEAT K TIMES ( INCREASE U ) REPEAT L TIMES ( INCREASE U ) REPEAT S TIMES ( INCREASE U ) CLEAR K REPEAT T TIMES ( INCREASE K ) CLEAR S CLEAR T CLEAR V REPEAT U TIMES ( INCREASE V REPEAT T TIMES ( CLEAR T CLEAR V INCREASE S ) REPEAT V TIMES ( INCREASE T CLEAR V ) ) CLEAR U REPEAT L TIMES ( INCREASE U ) REPEAT M TIMES ( INCREASE U ) REPEAT S TIMES ( INCREASE U ) CLEAR L REPEAT T TIMES ( INCREASE L ) CLEAR S CLEAR T CLEAR V REPEAT U TIMES ( INCREASE V REPEAT T TIMES ( CLEAR T CLEAR V INCREASE S ) REPEAT V TIMES ( INCREASE T CLEAR V ) ) CLEAR U REPEAT M TIMES ( INCREASE U ) REPEAT N TIMES ( INCREASE U ) REPEAT S TIMES ( INCREASE U ) CLEAR M REPEAT T TIMES ( INCREASE M ) CLEAR S CLEAR T CLEAR V REPEAT U TIMES ( INCREASE V REPEAT T TIMES ( CLEAR T CLEAR V INCREASE S ) REPEAT V TIMES ( INCREASE T CLEAR V ) ) CLEAR U REPEAT N TIMES ( INCREASE U ) REPEAT O TIMES ( INCREASE U ) REPEAT S TIMES ( INCREASE U ) CLEAR N REPEAT T TIMES ( INCREASE N ) CLEAR S CLEAR T CLEAR V REPEAT U TIMES ( INCREASE V REPEAT T TIMES ( CLEAR T CLEAR V INCREASE S ) REPEAT V TIMES ( INCREASE T CLEAR V ) ) CLEAR U REPEAT O TIMES ( INCREASE U ) REPEAT P TIMES ( INCREASE U ) REPEAT S TIMES ( INCREASE U ) CLEAR O REPEAT T TIMES ( INCREASE O ) CLEAR S CLEAR T CLEAR V REPEAT U TIMES ( INCREASE V REPEAT T TIMES ( CLEAR T CLEAR V INCREASE S ) REPEAT V TIMES ( INCREASE T CLEAR V ) ) CLEAR U REPEAT P TIMES ( INCREASE U ) REPEAT Q TIMES ( INCREASE U ) REPEAT S TIMES ( INCREASE U ) CLEAR P REPEAT T TIMES ( INCREASE P ) CLEAR S CLEAR T CLEAR V REPEAT U TIMES ( INCREASE V REPEAT T TIMES ( CLEAR T CLEAR V INCREASE S ) REPEAT V TIMES ( INCREASE T CLEAR V ) ) CLEAR Q REPEAT T TIMES ( INCREASE Q ) #----------------------------------------------------------------------------- # Clear variables. V = 0 #----------------------------------------------------------------------------- CLEAR S CLEAR T CLEAR U #------------------------------------------------------------------ # More efficient way of calculating X #------------------------------------------------------------------ REPEAT X TIMES ( INCREASE X INCREASE X ) INCREASE X ) REPEAT R TIMES ( CLEAR R #----------------------------------------------------------------------------- # X /= 2 #----------------------------------------------------------------------------- CLEAR A REPEAT B TIMES ( INCREASE A ) CLEAR B REPEAT C TIMES ( INCREASE B ) CLEAR C REPEAT D TIMES ( INCREASE C ) CLEAR D REPEAT E TIMES ( INCREASE D ) CLEAR E REPEAT F TIMES ( INCREASE E ) CLEAR F REPEAT G TIMES ( INCREASE F ) CLEAR G REPEAT H TIMES ( INCREASE G ) CLEAR H REPEAT I TIMES ( INCREASE H ) CLEAR I REPEAT J TIMES ( INCREASE I ) CLEAR J REPEAT K TIMES ( INCREASE J ) CLEAR K REPEAT L TIMES ( INCREASE K ) CLEAR L REPEAT M TIMES ( INCREASE L ) CLEAR M REPEAT N TIMES ( INCREASE M ) CLEAR N REPEAT O TIMES ( INCREASE N ) CLEAR O REPEAT P TIMES ( INCREASE O ) CLEAR P REPEAT Q TIMES ( INCREASE P ) CLEAR Q REPEAT R TIMES ( INCREASE Q ) CLEAR R #----------------------------------------------------------------------------- # Convert X to base 10 #----------------------------------------------------------------------------- # Find order of highest bit - 6 -> S # # Skips first 6 bits (A-F) #----------------------------------------------------------------------------- CLEAR T INCREASE T REPEAT G TIMES ( CLEAR S REPEAT T TIMES ( INCREASE S ) ) INCREASE T REPEAT H TIMES ( CLEAR S REPEAT T TIMES ( INCREASE S ) ) INCREASE T REPEAT I TIMES ( CLEAR S REPEAT T TIMES ( INCREASE S ) ) INCREASE T REPEAT J TIMES ( CLEAR S REPEAT T TIMES ( INCREASE S ) ) INCREASE T REPEAT K TIMES ( CLEAR S REPEAT T TIMES ( INCREASE S ) ) INCREASE T REPEAT L TIMES ( CLEAR S REPEAT T TIMES ( INCREASE S ) ) INCREASE T REPEAT M TIMES ( CLEAR S REPEAT T TIMES ( INCREASE S ) ) INCREASE T REPEAT N TIMES ( CLEAR S REPEAT T TIMES ( INCREASE S ) ) INCREASE T REPEAT O TIMES ( CLEAR S REPEAT T TIMES ( INCREASE S ) ) INCREASE T REPEAT P TIMES ( CLEAR S REPEAT T TIMES ( INCREASE S ) ) INCREASE T REPEAT Q TIMES ( CLEAR S REPEAT T TIMES ( INCREASE S ) ) CLEAR T #------------------------------------------------------------------------------ # Sum of first 6 bits #----------------------------------------------------------------------------- CLEAR X REPEAT A TIMES ( INCREASE X ) INCREASE T INCREASE T REPEAT B TIMES ( REPEAT T TIMES ( INCREASE X ) ) REPEAT T TIMES ( INCREASE T ) REPEAT C TIMES ( REPEAT T TIMES ( INCREASE X ) ) REPEAT T TIMES ( INCREASE T ) REPEAT D TIMES ( REPEAT T TIMES ( INCREASE X ) ) REPEAT T TIMES ( INCREASE T ) REPEAT E TIMES ( REPEAT T TIMES ( INCREASE X ) ) REPEAT T TIMES ( INCREASE T ) REPEAT F TIMES ( REPEAT T TIMES ( INCREASE X ) ) #----------------------------------------------------------------------------- # Sum of last 12 bits #----------------------------------------------------------------------------- # Check if S > 0 CLEAR U REPEAT S TIMES ( CLEAR U INCREASE U ) # If S > 0, double T and increase X by T if G REPEAT U TIMES ( REPEAT T TIMES ( INCREASE T ) REPEAT G TIMES ( REPEAT T TIMES ( INCREASE X ) ) ) # W = S - 1 CLEAR V CLEAR W REPEAT S TIMES ( REPEAT V TIMES ( INCREASE W ) CLEAR V INCREASE V ) # Check if W > 0 CLEAR U REPEAT W TIMES ( CLEAR U INCREASE U ) # If W > 0, double T and increase X by T if H REPEAT U TIMES ( REPEAT T TIMES ( INCREASE T ) REPEAT H TIMES ( REPEAT T TIMES ( INCREASE X ) ) ) # S = W - 1 CLEAR S CLEAR V REPEAT W TIMES ( REPEAT V TIMES ( INCREASE S ) CLEAR V INCREASE V ) # Check if S > 0 CLEAR U REPEAT S TIMES ( CLEAR U INCREASE U ) # If S > 0, double T and increase X by T if I REPEAT U TIMES ( REPEAT T TIMES ( INCREASE T ) REPEAT I TIMES ( REPEAT T TIMES ( INCREASE X ) ) ) # W = S - 1 CLEAR V CLEAR W REPEAT S TIMES ( REPEAT V TIMES ( INCREASE W ) CLEAR V INCREASE V ) # Check if W > 0 CLEAR U REPEAT W TIMES ( CLEAR U INCREASE U ) # If W > 0, double T and increase X by T if J REPEAT U TIMES ( REPEAT T TIMES ( INCREASE T ) REPEAT J TIMES ( REPEAT T TIMES ( INCREASE X ) ) ) # S = W - 1 CLEAR S CLEAR V REPEAT W TIMES ( REPEAT V TIMES ( INCREASE S ) CLEAR V INCREASE V ) # Check if S > 0 CLEAR U REPEAT S TIMES ( CLEAR U INCREASE U ) # If S > 0, double T and increase X by T if K REPEAT U TIMES ( REPEAT T TIMES ( INCREASE T ) REPEAT K TIMES ( REPEAT T TIMES ( INCREASE X ) ) ) # W = S - 1 CLEAR V CLEAR W REPEAT S TIMES ( REPEAT V TIMES ( INCREASE W ) CLEAR V INCREASE V ) # Check if W > 0 CLEAR U REPEAT W TIMES ( CLEAR U INCREASE U ) # If W > 0, double T and increase X by T if L REPEAT U TIMES ( REPEAT T TIMES ( INCREASE T ) REPEAT L TIMES ( REPEAT T TIMES ( INCREASE X ) ) ) # S = W - 1 CLEAR S CLEAR V REPEAT W TIMES ( REPEAT V TIMES ( INCREASE S ) CLEAR V INCREASE V ) # Check if S > 0 CLEAR U REPEAT S TIMES ( CLEAR U INCREASE U ) # If S > 0, double T and increase X by T if M REPEAT U TIMES ( REPEAT T TIMES ( INCREASE T ) REPEAT M TIMES ( REPEAT T TIMES ( INCREASE X ) ) ) # W = S - 1 CLEAR V CLEAR W REPEAT S TIMES ( REPEAT V TIMES ( INCREASE W ) CLEAR V INCREASE V ) # Check if W > 0 CLEAR U REPEAT W TIMES ( CLEAR U INCREASE U ) # If W > 0, double T and increase X by T if N REPEAT U TIMES ( REPEAT T TIMES ( INCREASE T ) REPEAT N TIMES ( REPEAT T TIMES ( INCREASE X ) ) ) # S = W - 1 CLEAR S CLEAR V REPEAT W TIMES ( REPEAT V TIMES ( INCREASE S ) CLEAR V INCREASE V ) # Check if S > 0 CLEAR U REPEAT S TIMES ( CLEAR U INCREASE U ) # If S > 0, double T and increase X by T if O REPEAT U TIMES ( REPEAT T TIMES ( INCREASE T ) REPEAT O TIMES ( REPEAT T TIMES ( INCREASE X ) ) ) # W = S - 1 CLEAR V CLEAR W REPEAT S TIMES ( REPEAT V TIMES ( INCREASE W ) CLEAR V INCREASE V ) # Check if W > 0 CLEAR U REPEAT W TIMES ( CLEAR U INCREASE U ) # If W > 0, double T and increase X by T if P REPEAT U TIMES ( REPEAT T TIMES ( INCREASE T ) REPEAT P TIMES ( REPEAT T TIMES ( INCREASE X ) ) ) # S = W - 1 CLEAR S CLEAR V REPEAT W TIMES ( REPEAT V TIMES ( INCREASE S ) CLEAR V INCREASE V ) # Check if S > 0 CLEAR U REPEAT S TIMES ( CLEAR U INCREASE U ) # If S > 0, double T and increase X by T if Q REPEAT U TIMES ( REPEAT T TIMES ( INCREASE T ) REPEAT Q TIMES ( REPEAT T TIMES ( INCREASE X ) ) ) #----------------------------------------------------------------------------- # S and W can be non zero # T is a power of two # U and V are 0 or 1 #----------------------------------------------------------------------------- CLEAR S CLEAR W CLEAR T CLEAR U CLEAR V ) #----------------------------------------------------------------------------- # Print X #----------------------------------------------------------------------------- PRINT X INCREASE S REPEAT B TIMES ( CLEAR S ) REPEAT C TIMES ( CLEAR S ) REPEAT D TIMES ( CLEAR S ) REPEAT E TIMES ( CLEAR S ) REPEAT F TIMES ( CLEAR S ) REPEAT G TIMES ( CLEAR S ) REPEAT H TIMES ( CLEAR S ) REPEAT I TIMES ( CLEAR S ) REPEAT J TIMES ( CLEAR S ) REPEAT K TIMES ( CLEAR S ) REPEAT L TIMES ( CLEAR S ) REPEAT M TIMES ( CLEAR S ) REPEAT N TIMES ( CLEAR S ) REPEAT O TIMES ( CLEAR S ) REPEAT P TIMES ( CLEAR S ) REPEAT Q TIMES ( CLEAR S ) REPEAT R TIMES ( CLEAR S ) REPEAT S TIMES ( CLEAR Y ) ) )