# X - transform into 18 bits
REPEAT X TIMES (
CLEAR V
INCREASE V
REPEAT R TIMES (
REPEAT Q TIMES (
REPEAT P TIMES (
REPEAT O TIMES (
REPEAT N TIMES (
REPEAT M TIMES (
REPEAT L TIMES (
REPEAT K TIMES (
REPEAT J TIMES (
REPEAT I TIMES (
REPEAT H TIMES (
REPEAT G TIMES (
REPEAT F TIMES (
REPEAT E TIMES (
REPEAT D TIMES (
REPEAT C TIMES (
REPEAT B TIMES (
REPEAT V TIMES ( INCREASE A )
CLEAR V
CLEAR B
)
REPEAT V TIMES ( INCREASE B )
CLEAR V
CLEAR C
)
REPEAT V TIMES ( INCREASE C )
CLEAR V
CLEAR D
)
REPEAT V TIMES ( INCREASE D )
CLEAR V
CLEAR E
)
REPEAT V TIMES ( INCREASE E )
CLEAR V
CLEAR F
)
REPEAT V TIMES ( INCREASE F )
CLEAR V
CLEAR G
)
REPEAT V TIMES ( INCREASE G )
CLEAR V
CLEAR H
)
REPEAT V TIMES ( INCREASE H )
CLEAR V
CLEAR I
)
REPEAT V TIMES ( INCREASE I )
CLEAR V
CLEAR J
)
REPEAT V TIMES ( INCREASE J )
CLEAR V
CLEAR K
)
REPEAT V TIMES ( INCREASE K )
CLEAR V
CLEAR L
)
REPEAT V TIMES ( INCREASE L )
CLEAR V
CLEAR R
)
REPEAT V TIMES ( INCREASE M )
CLEAR V
CLEAR N
)
REPEAT V TIMES ( INCREASE N )
CLEAR V
CLEAR O
)
REPEAT V TIMES ( INCREASE O )
CLEAR V
CLEAR P
)
REPEAT V TIMES ( INCREASE P )
CLEAR V
CLEAR Q
)
REPEAT V TIMES ( INCREASE Q )
CLEAR V
CLEAR R
)
REPEAT V TIMES ( INCREASE R )
)
CLEAR A
CLEAR B
INCREASE B
INCREASE B
INCREASE B
INCREASE B
REPEAT B TIMES (
REPEAT B TIMES (
REPEAT B TIMES (
REPEAT B TIMES (
INCREASE A
)
)
)
)
PRINT X
# A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
# while last bit != first bit do:
REPEAT A TIMES (
CLEAR A
CLEAR B
# SET Q = 1 IF X != 1 ELSE Q = 0
CLEAR W
CLEAR T
INCREASE T
CLEAR Z # RESULT
REPEAT X TIMES (
REPEAT W TIMES (
INCREASE Z
CLEAR T
CLEAR W
)
REPEAT T TIMES (
INCREASE W
)
)
# IF X != 1
REPEAT Z TIMES (
# ELSE BLOCK
CLEAR U
INCREASE U
# if last bit == 1:
REPEAT R TIMES (
# 3X + 1
CLEAR Z # RES
CLEAR Y # INC
CLEAR W # MEM
INCREASE Y # SET INCREASE TO 1
REPEAT R TIMES ( INCREASE Z )
REPEAT Y TIMES ( INCREASE Z )
REPEAT W TIMES ( INCREASE Z )
CLEAR Y
CLEAR W
REPEAT R TIMES ( INCREASE W )
CLEAR R
REPEAT Z TIMES (
CLEAR T
INCREASE T
REPEAT R TIMES ( CLEAR R CLEAR T CLEAR Y INCREASE Y )
REPEAT T TIMES ( INCREASE R )
)
CLEAR Z
REPEAT Q TIMES ( INCREASE Z )
REPEAT Y TIMES ( INCREASE Z )
REPEAT W TIMES ( INCREASE Z )
CLEAR Y
CLEAR W
REPEAT Q TIMES ( INCREASE W )
CLEAR Q
REPEAT Z TIMES (
CLEAR T
INCREASE T
REPEAT Q TIMES ( CLEAR Q CLEAR T CLEAR Y INCREASE Y )
REPEAT T TIMES ( INCREASE Q )
)
CLEAR Z
REPEAT P TIMES ( INCREASE Z )
REPEAT Y TIMES ( INCREASE Z )
REPEAT W TIMES ( INCREASE Z )
CLEAR Y
CLEAR W
REPEAT P TIMES ( INCREASE W )
CLEAR P
REPEAT Z TIMES (
CLEAR T
INCREASE T
REPEAT P TIMES ( CLEAR P CLEAR T CLEAR Y INCREASE Y )
REPEAT T TIMES ( INCREASE P )
)
CLEAR Z
REPEAT O TIMES ( INCREASE Z )
REPEAT Y TIMES ( INCREASE Z )
REPEAT W TIMES ( INCREASE Z )
CLEAR Y
CLEAR W
REPEAT O TIMES ( INCREASE W )
CLEAR O
REPEAT Z TIMES (
CLEAR T
INCREASE T
REPEAT O TIMES ( CLEAR O CLEAR T CLEAR Y INCREASE Y )
REPEAT T TIMES ( INCREASE O )
)
CLEAR Z
REPEAT N TIMES ( INCREASE Z )
REPEAT Y TIMES ( INCREASE Z )
REPEAT W TIMES ( INCREASE Z )
CLEAR Y
CLEAR W
REPEAT N TIMES ( INCREASE W )
CLEAR N
REPEAT Z TIMES (
CLEAR T
INCREASE T
REPEAT N TIMES ( CLEAR N CLEAR T CLEAR Y INCREASE Y )
REPEAT T TIMES ( INCREASE N )
)
CLEAR Z
REPEAT M TIMES ( INCREASE Z )
REPEAT Y TIMES ( INCREASE Z )
REPEAT W TIMES ( INCREASE Z )
CLEAR Y
CLEAR W
REPEAT M TIMES ( INCREASE W )
CLEAR M
REPEAT Z TIMES (
CLEAR T
INCREASE T
REPEAT M TIMES ( CLEAR M CLEAR T CLEAR Y INCREASE Y )
REPEAT T TIMES ( INCREASE M )
)
CLEAR Z
REPEAT L TIMES ( INCREASE Z )
REPEAT Y TIMES ( INCREASE Z )
REPEAT W TIMES ( INCREASE Z )
CLEAR Y
CLEAR W
REPEAT L TIMES ( INCREASE W )
CLEAR L
REPEAT Z TIMES (
CLEAR T
INCREASE T
REPEAT L TIMES ( CLEAR L CLEAR T CLEAR Y INCREASE Y )
REPEAT T TIMES ( INCREASE L )
)
CLEAR Z
REPEAT K TIMES ( INCREASE Z )
REPEAT Y TIMES ( INCREASE Z )
REPEAT W TIMES ( INCREASE Z )
CLEAR Y
CLEAR W
REPEAT K TIMES ( INCREASE W )
CLEAR K
REPEAT Z TIMES (
CLEAR T
INCREASE T
REPEAT K TIMES ( CLEAR K CLEAR T CLEAR Y INCREASE Y )
REPEAT T TIMES ( INCREASE K )
)
CLEAR Z
REPEAT J TIMES ( INCREASE Z )
REPEAT Y TIMES ( INCREASE Z )
REPEAT W TIMES ( INCREASE Z )
CLEAR Y
CLEAR W
REPEAT J TIMES ( INCREASE W )
CLEAR J
REPEAT Z TIMES (
CLEAR T
INCREASE T
REPEAT J TIMES ( CLEAR J CLEAR T CLEAR Y INCREASE Y )
REPEAT T TIMES ( INCREASE J )
)
CLEAR Z
REPEAT I TIMES ( INCREASE Z )
REPEAT Y TIMES ( INCREASE Z )
REPEAT W TIMES ( INCREASE Z )
CLEAR Y
CLEAR W
REPEAT I TIMES ( INCREASE W )
CLEAR I
REPEAT Z TIMES (
CLEAR T
INCREASE T
REPEAT I TIMES ( CLEAR I CLEAR T CLEAR Y INCREASE Y )
REPEAT T TIMES ( INCREASE I )
)
CLEAR Z
REPEAT H TIMES ( INCREASE Z )
REPEAT Y TIMES ( INCREASE Z )
REPEAT W TIMES ( INCREASE Z )
CLEAR Y
CLEAR W
REPEAT H TIMES ( INCREASE W )
CLEAR H
REPEAT Z TIMES (
CLEAR T
INCREASE T
REPEAT H TIMES ( CLEAR H CLEAR T CLEAR Y INCREASE Y )
REPEAT T TIMES ( INCREASE H )
)
CLEAR Z
REPEAT G TIMES ( INCREASE Z )
REPEAT Y TIMES ( INCREASE Z )
REPEAT W TIMES ( INCREASE Z )
CLEAR Y
CLEAR W
REPEAT G TIMES ( INCREASE W )
CLEAR G
REPEAT Z TIMES (
CLEAR T
INCREASE T
REPEAT G TIMES ( CLEAR G CLEAR T CLEAR Y INCREASE Y )
REPEAT T TIMES ( INCREASE G )
)
CLEAR Z
REPEAT F TIMES ( INCREASE Z )
REPEAT Y TIMES ( INCREASE Z )
REPEAT W TIMES ( INCREASE Z )
CLEAR Y
CLEAR W
REPEAT F TIMES ( INCREASE W )
CLEAR F
REPEAT Z TIMES (
CLEAR T
INCREASE T
REPEAT F TIMES ( CLEAR F CLEAR T CLEAR Y INCREASE Y )
REPEAT T TIMES ( INCREASE F )
)
CLEAR Z
REPEAT E TIMES ( INCREASE Z )
REPEAT Y TIMES ( INCREASE Z )
REPEAT W TIMES ( INCREASE Z )
CLEAR Y
CLEAR W
REPEAT E TIMES ( INCREASE W )
CLEAR E
REPEAT Z TIMES (
CLEAR T
INCREASE T
REPEAT E TIMES ( CLEAR E CLEAR T CLEAR Y INCREASE Y )
REPEAT T TIMES ( INCREASE E )
)
CLEAR Z
REPEAT D TIMES ( INCREASE Z )
REPEAT Y TIMES ( INCREASE Z )
REPEAT W TIMES ( INCREASE Z )
CLEAR Y
CLEAR W
REPEAT D TIMES ( INCREASE W )
CLEAR D
REPEAT Z TIMES (
CLEAR T
INCREASE T
REPEAT D TIMES ( CLEAR D CLEAR T CLEAR Y INCREASE Y )
REPEAT T TIMES ( INCREASE D )
)
CLEAR Z
REPEAT C TIMES ( INCREASE Z )
REPEAT Y TIMES ( INCREASE Z )
REPEAT W TIMES ( INCREASE Z )
CLEAR Y
CLEAR W
REPEAT C TIMES ( INCREASE W )
CLEAR C
REPEAT Z TIMES (
CLEAR T
INCREASE T
REPEAT C TIMES ( CLEAR C CLEAR T CLEAR Y INCREASE Y )
REPEAT T TIMES ( INCREASE C )
)
CLEAR Z
REPEAT B TIMES ( INCREASE Z )
REPEAT Y TIMES ( INCREASE Z )
REPEAT W TIMES ( INCREASE Z )
CLEAR Y
CLEAR W
REPEAT B TIMES ( INCREASE W )
CLEAR B
REPEAT Z TIMES (
CLEAR T
INCREASE T
REPEAT B TIMES ( CLEAR B CLEAR T CLEAR Y INCREASE Y )
REPEAT T TIMES ( INCREASE B )
)
CLEAR Z
REPEAT A TIMES ( INCREASE Z )
REPEAT Y TIMES ( INCREASE Z )
REPEAT W TIMES ( INCREASE Z )
CLEAR Y
CLEAR W
REPEAT A TIMES ( INCREASE W )
CLEAR A
REPEAT Z TIMES (
CLEAR T
INCREASE T
REPEAT A TIMES ( CLEAR A CLEAR T CLEAR Y INCREASE Y )
REPEAT T TIMES ( INCREASE A )
)
CLEAR S
CLEAR Z
CLEAR U
)
# else
REPEAT U TIMES (
# X /= 2
CLEAR R
REPEAT Q TIMES ( INCREASE R )
CLEAR Q
REPEAT P TIMES ( INCREASE Q )
CLEAR P
REPEAT O TIMES ( INCREASE P )
CLEAR O
REPEAT N TIMES ( INCREASE O )
CLEAR N
REPEAT M TIMES ( INCREASE N )
CLEAR M
REPEAT L TIMES ( INCREASE M )
CLEAR L
REPEAT K TIMES ( INCREASE L )
CLEAR K
REPEAT J TIMES ( INCREASE K )
CLEAR J
REPEAT I TIMES ( INCREASE J )
CLEAR I
REPEAT H TIMES ( INCREASE I )
CLEAR H
REPEAT G TIMES ( INCREASE H )
CLEAR G
REPEAT F TIMES ( INCREASE G )
CLEAR F
REPEAT E TIMES ( INCREASE F )
CLEAR E
REPEAT D TIMES ( INCREASE E )
CLEAR D
REPEAT C TIMES ( INCREASE D )
CLEAR C
REPEAT B TIMES ( INCREASE C )
CLEAR B
REPEAT A TIMES ( INCREASE B )
CLEAR A
)
CLEAR X
CLEAR U
INCREASE U
# ADD 2^z TO X
# U *= 2
REPEAT R TIMES ( REPEAT U TIMES ( INCREASE X ) )
REPEAT U TIMES ( INCREASE U )
REPEAT Q TIMES ( REPEAT U TIMES ( INCREASE X ) )
REPEAT U TIMES ( INCREASE U )
REPEAT P TIMES ( REPEAT U TIMES ( INCREASE X ) )
REPEAT U TIMES ( INCREASE U )
REPEAT O TIMES ( REPEAT U TIMES ( INCREASE X ) )
REPEAT U TIMES ( INCREASE U )
REPEAT N TIMES ( REPEAT U TIMES ( INCREASE X ) )
REPEAT U TIMES ( INCREASE U )
REPEAT M TIMES ( REPEAT U TIMES ( INCREASE X ) )
REPEAT U TIMES ( INCREASE U )
REPEAT L TIMES ( REPEAT U TIMES ( INCREASE X ) )
REPEAT U TIMES ( INCREASE U )
REPEAT K TIMES ( REPEAT U TIMES ( INCREASE X ) )
REPEAT U TIMES ( INCREASE U )
REPEAT J TIMES ( REPEAT U TIMES ( INCREASE X ) )
REPEAT U TIMES ( INCREASE U )
REPEAT I TIMES ( REPEAT U TIMES ( INCREASE X ) )
REPEAT U TIMES ( INCREASE U )
REPEAT H TIMES ( REPEAT U TIMES ( INCREASE X ) )
REPEAT U TIMES ( INCREASE U )
REPEAT G TIMES ( REPEAT U TIMES ( INCREASE X ) )
REPEAT U TIMES ( INCREASE U )
REPEAT F TIMES ( REPEAT U TIMES ( INCREASE X ) )
REPEAT U TIMES ( INCREASE U )
REPEAT E TIMES ( REPEAT U TIMES ( INCREASE X ) )
REPEAT U TIMES ( INCREASE U )
REPEAT D TIMES ( REPEAT U TIMES ( INCREASE X ) )
REPEAT U TIMES ( INCREASE U )
REPEAT C TIMES ( REPEAT U TIMES ( INCREASE X ) )
REPEAT U TIMES ( INCREASE U )
REPEAT B TIMES ( REPEAT U TIMES ( INCREASE X ) )
REPEAT U TIMES ( INCREASE U )
REPEAT A TIMES ( REPEAT U TIMES ( INCREASE X ) )
# print X
PRINT X
)
)