PRINT X #----------------------------------------------------------------------------- # Convert X to base 2 # The value of X is preserved by using S instead #----------------------------------------------------------------------------- REPEAT X TIMES ( INCREASE S ) REPEAT S TIMES ( INCREASE U REPEAT A TIMES ( CLEAR U CLEAR A INCREASE T ) REPEAT U TIMES ( INCREASE A ) ) CLEAR S CLEAR U REPEAT T TIMES ( INCREASE U REPEAT B TIMES ( CLEAR U CLEAR B INCREASE S ) REPEAT U TIMES ( INCREASE B ) ) CLEAR T CLEAR U REPEAT S TIMES ( INCREASE U REPEAT C TIMES ( CLEAR U CLEAR C INCREASE T ) REPEAT U TIMES ( INCREASE C ) ) CLEAR S CLEAR U REPEAT T TIMES ( INCREASE U REPEAT D TIMES ( CLEAR U CLEAR D INCREASE S ) REPEAT U TIMES ( INCREASE D ) ) CLEAR T CLEAR U REPEAT S TIMES ( INCREASE U REPEAT E TIMES ( CLEAR U CLEAR E INCREASE T ) REPEAT U TIMES ( INCREASE E ) ) CLEAR S CLEAR U REPEAT T TIMES ( INCREASE U REPEAT F TIMES ( CLEAR U CLEAR F INCREASE S ) REPEAT U TIMES ( INCREASE F ) ) CLEAR T CLEAR U REPEAT S TIMES ( INCREASE U REPEAT G TIMES ( CLEAR U CLEAR G INCREASE T ) REPEAT U TIMES ( INCREASE G ) ) CLEAR S CLEAR U REPEAT T TIMES ( INCREASE U REPEAT H TIMES ( CLEAR U CLEAR H INCREASE S ) REPEAT U TIMES ( INCREASE H ) ) CLEAR T CLEAR U REPEAT S TIMES ( INCREASE U REPEAT I TIMES ( CLEAR U CLEAR I INCREASE T ) REPEAT U TIMES ( INCREASE I ) ) CLEAR S CLEAR U REPEAT T TIMES ( INCREASE U REPEAT J TIMES ( CLEAR U CLEAR J INCREASE S ) REPEAT U TIMES ( INCREASE J ) ) CLEAR T CLEAR U REPEAT S TIMES ( INCREASE U REPEAT K TIMES ( CLEAR U CLEAR K INCREASE T ) REPEAT U TIMES ( INCREASE K ) ) CLEAR S CLEAR U REPEAT T TIMES ( INCREASE U REPEAT L TIMES ( CLEAR U CLEAR L INCREASE S ) REPEAT U TIMES ( INCREASE L ) ) CLEAR T CLEAR U REPEAT S TIMES ( INCREASE U REPEAT M TIMES ( CLEAR U CLEAR M INCREASE T ) REPEAT U TIMES ( INCREASE M ) ) CLEAR S CLEAR U REPEAT T TIMES ( INCREASE U REPEAT N TIMES ( CLEAR U CLEAR N INCREASE S ) REPEAT U TIMES ( INCREASE N ) ) CLEAR T CLEAR U REPEAT S TIMES ( INCREASE U REPEAT O TIMES ( CLEAR U CLEAR O INCREASE T ) REPEAT U TIMES ( INCREASE O ) ) CLEAR S CLEAR U REPEAT T TIMES ( INCREASE U REPEAT P TIMES ( CLEAR U CLEAR P INCREASE S ) REPEAT U TIMES ( INCREASE P ) ) CLEAR T CLEAR U REPEAT S TIMES ( INCREASE U REPEAT Q TIMES ( CLEAR U CLEAR Q INCREASE T ) REPEAT U TIMES ( INCREASE Q ) ) CLEAR S CLEAR T CLEAR U #----------------------------------------------------------------------------- # 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 T REPEAT A TIMES ( CLEAR T INCREASE S ) 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 ) ) )