PRINT X #----------------------------------------------------------------------------- # Base 2 103 # X == 1 37 # Z = 180 18 # Base 10 274 # 3x + 1 389 # x /= 2 52 # Misc 23 # Total 933 #----------------------------------------------------------------------------- #----------------------------------------------------------------------------- # Convert X to base 2 # The value of X is preserved by using S instead #----------------------------------------------------------------------------- REPEAT X TIMES ( INCREASE S REPEAT A TIMES ( REPEAT B TIMES ( REPEAT C TIMES ( REPEAT D TIMES ( REPEAT E TIMES ( REPEAT F TIMES ( REPEAT G TIMES ( REPEAT H TIMES ( REPEAT I TIMES ( REPEAT J TIMES ( CLEAR I CLEAR J ) REPEAT I TIMES ( CLEAR I INCREASE J ) CLEAR H ) REPEAT H TIMES ( CLEAR H INCREASE I ) CLEAR G ) REPEAT G TIMES ( CLEAR G INCREASE H ) CLEAR F ) REPEAT F TIMES ( CLEAR F INCREASE G ) CLEAR E ) REPEAT E TIMES ( CLEAR E INCREASE F ) CLEAR D ) REPEAT D TIMES ( CLEAR D INCREASE E ) CLEAR C ) REPEAT C TIMES ( CLEAR C INCREASE D ) CLEAR B ) REPEAT B TIMES ( CLEAR B INCREASE C ) CLEAR A ) REPEAT A TIMES ( CLEAR A INCREASE B ) CLEAR S ) REPEAT S TIMES ( INCREASE A ) ) CLEAR S #----------------------------------------------------------------------------- # 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 W REPEAT S TIMES ( CLEAR W ) 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 W TIMES ( INCREASE Y REPEAT A TIMES ( CLEAR Y #----------------------------------------------------------------------------- # 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 U REPEAT Q TIMES ( INCREASE U ) REPEAT R TIMES ( INCREASE U ) REPEAT S TIMES ( INCREASE U ) CLEAR Q REPEAT T TIMES ( INCREASE Q ) 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 R REPEAT T TIMES ( INCREASE R ) CLEAR S CLEAR T CLEAR U CLEAR V REPEAT X TIMES ( INCREASE X INCREASE X ) INCREASE X PRINT X ) REPEAT Y TIMES ( #----------------------------------------------------------------------------- # 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 #----------------------------------------------------------------------------- # Binary to decimal #----------------------------------------------------------------------------- # Find order of highest bit - 6 -> S # # Skips first 6 bits (A-F) # # Also check if x will be 1 #----------------------------------------------------------------------------- INCREASE U REPEAT B TIMES ( CLEAR U ) REPEAT C TIMES ( CLEAR U ) REPEAT D TIMES ( CLEAR U ) REPEAT E TIMES ( CLEAR U ) REPEAT F TIMES ( CLEAR U ) INCREASE T REPEAT G TIMES ( CLEAR S CLEAR U REPEAT T TIMES ( INCREASE S ) ) INCREASE T REPEAT H TIMES ( CLEAR S CLEAR U REPEAT T TIMES ( INCREASE S ) ) INCREASE T REPEAT I TIMES ( CLEAR S CLEAR U REPEAT T TIMES ( INCREASE S ) ) INCREASE T REPEAT J TIMES ( CLEAR S CLEAR U REPEAT T TIMES ( INCREASE S ) ) INCREASE T REPEAT K TIMES ( CLEAR S CLEAR U REPEAT T TIMES ( INCREASE S ) ) INCREASE T REPEAT L TIMES ( CLEAR S CLEAR U REPEAT T TIMES ( INCREASE S ) ) INCREASE T REPEAT M TIMES ( CLEAR S CLEAR U REPEAT T TIMES ( INCREASE S ) ) INCREASE T REPEAT N TIMES ( CLEAR S CLEAR U REPEAT T TIMES ( INCREASE S ) ) INCREASE T REPEAT O TIMES ( CLEAR S CLEAR U REPEAT T TIMES ( INCREASE S ) ) INCREASE T REPEAT P TIMES ( CLEAR S CLEAR U REPEAT T TIMES ( INCREASE S ) ) INCREASE T REPEAT Q TIMES ( CLEAR S CLEAR U REPEAT T TIMES ( INCREASE S ) ) CLEAR T REPEAT U TIMES ( CLEAR W ) #----------------------------------------------------------------------------- # 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 11 bits #----------------------------------------------------------------------------- # Check if S > 0 CLEAR U REPEAT S TIMES ( CLEAR U INCREASE U ) # If S > 0, double T and increase X bX T if G REPEAT U TIMES ( INCREASE Y REPEAT G TIMES ( REPEAT Y TIMES ( REPEAT T TIMES ( INCREASE X ) ) ) # V = S - 1 CLEAR U CLEAR V REPEAT S TIMES ( REPEAT U TIMES ( INCREASE V ) CLEAR U INCREASE U ) # Check if V > 0 CLEAR U REPEAT V TIMES ( CLEAR U INCREASE U ) # If V > 0, double T and increase X by T if H REPEAT U TIMES ( REPEAT Y TIMES ( INCREASE Y ) REPEAT H TIMES ( REPEAT Y TIMES ( REPEAT T TIMES ( INCREASE X ) ) ) # S = V - 1 CLEAR S CLEAR U REPEAT V TIMES ( REPEAT U TIMES ( INCREASE S ) CLEAR U INCREASE U ) # 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 Y TIMES ( INCREASE Y ) REPEAT I TIMES ( REPEAT Y TIMES ( REPEAT T TIMES ( INCREASE X ) ) ) # V = S - 1 CLEAR U CLEAR V REPEAT S TIMES ( REPEAT U TIMES ( INCREASE V ) CLEAR U INCREASE U ) # Check if V > 0 CLEAR U REPEAT V TIMES ( CLEAR U INCREASE U ) # If V > 0, double T and increase X by T if J REPEAT U TIMES ( REPEAT Y TIMES ( INCREASE Y ) REPEAT J TIMES ( REPEAT Y TIMES ( REPEAT T TIMES ( INCREASE X ) ) ) # S = V - 1 CLEAR S CLEAR U REPEAT V TIMES ( REPEAT U TIMES ( INCREASE S ) CLEAR U INCREASE U ) # 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 Y TIMES ( INCREASE Y ) REPEAT K TIMES ( REPEAT Y TIMES ( REPEAT T TIMES ( INCREASE X ) ) ) # V = S - 1 CLEAR U CLEAR V REPEAT S TIMES ( REPEAT U TIMES ( INCREASE V ) CLEAR U INCREASE U ) # Check if V > 0 CLEAR U REPEAT V TIMES ( CLEAR U INCREASE U ) # If V > 0, double T and increase X by T if L REPEAT U TIMES ( REPEAT T TIMES ( INCREASE T ) REPEAT L TIMES ( REPEAT Y TIMES ( REPEAT T TIMES ( INCREASE X ) ) ) # S = V - 1 CLEAR S CLEAR U REPEAT V TIMES ( REPEAT U TIMES ( INCREASE S ) CLEAR U INCREASE U ) # 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 Y TIMES ( INCREASE Y ) REPEAT M TIMES ( REPEAT Y TIMES ( REPEAT T TIMES ( INCREASE X ) ) ) # V = S - 1 CLEAR U CLEAR V REPEAT S TIMES ( REPEAT U TIMES ( INCREASE V ) CLEAR U INCREASE U ) # Check if V > 0 CLEAR U REPEAT V TIMES ( CLEAR U INCREASE U ) # If V > 0, double T and increase X by T if N REPEAT U TIMES ( REPEAT T TIMES ( INCREASE T ) REPEAT N TIMES ( REPEAT Y TIMES ( REPEAT T TIMES ( INCREASE X ) ) ) # S = V - 1 CLEAR S CLEAR U REPEAT V TIMES ( REPEAT U TIMES ( INCREASE S ) CLEAR U INCREASE U ) # 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 Y TIMES ( INCREASE Y ) REPEAT O TIMES ( REPEAT Y TIMES ( REPEAT T TIMES ( INCREASE X ) ) ) # V = S - 1 CLEAR U CLEAR V REPEAT S TIMES ( REPEAT U TIMES ( INCREASE V ) CLEAR U INCREASE U ) # Check if V > 0 CLEAR U REPEAT V TIMES ( CLEAR U INCREASE U ) # If V > 0, double T and increase X by T if P REPEAT U TIMES ( REPEAT T TIMES ( INCREASE T ) REPEAT P TIMES ( REPEAT Y TIMES ( REPEAT T TIMES ( INCREASE X ) ) ) # S = V - 1 CLEAR S CLEAR U REPEAT V TIMES ( REPEAT U TIMES ( INCREASE S ) CLEAR U INCREASE U ) # 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 Y TIMES ( INCREASE Y ) REPEAT Q TIMES ( REPEAT Y TIMES ( REPEAT T TIMES ( INCREASE X ) ) ) ) ) ) ) ) ) ) ) ) ) ) #----------------------------------------------------------------------------- # S can be non zero # T is a power of two # U and V are 0 or 1 #----------------------------------------------------------------------------- CLEAR S CLEAR T CLEAR U CLEAR V CLEAR Y PRINT X ) ) )