# X = INPUT
# W = WHILE LOOP COUNT
# A B C D E F G H I J K L M N O P Q R = BITS (18)
# STUVW XY->Z
# GC = Garbage Collection
#
#
# W = 30 for testing purposes
INCREASE W INCREASE W INCREASE W
REPEAT W TIMES ( INCREASE W )
REPEAT W TIMES ( INCREASE W )
REPEAT W TIMES ( INCREASE W )
REPEAT W TIMES ( INCREASE W )
REPEAT W TIMES ( INCREASE W )
REPEAT W TIMES ( INCREASE W )
#INCREASE X INCREASE X INCREASE X INCREASE X INCREASE X INCREASE X INCREASE X INCREASE X INCREASE X
#INCREASE X INCREASE X INCREASE X INCREASE X INCREASE X INCREASE X INCREASE X INCREASE X INCREASE X
#INCREASE X INCREASE X INCREASE X INCREASE X INCREASE X INCREASE X INCREASE X INCREASE X INCREASE X
PRINT X # Starting number of Collatz Conjecture.
# Copy to other variable.
REPEAT X TIMES ( INCREASE Z )
# DECIMAL TO BINARY
# FLOOR(X / 2) Y = QUOTIENT, R = REMAINDER
INCREASE R
REPEAT X TIMES (
REPEAT R TIMES ( INCREASE V )
INCREASE R REPEAT V TIMES ( CLEAR R ) CLEAR V
# GETS DIVIDED NUMBER
REPEAT R TIMES ( INCREASE Y )
)
REPEAT R TIMES ( INCREASE V ) INCREASE R REPEAT V TIMES ( CLEAR R )
CLEAR V CLEAR X # GC
INCREASE Q
REPEAT Y TIMES (
REPEAT Q TIMES ( INCREASE V )
INCREASE Q REPEAT V TIMES ( CLEAR Q ) CLEAR V
# GETS DIVIDED NUMBER
REPEAT Q TIMES ( INCREASE X )
)
REPEAT Q TIMES ( INCREASE V ) INCREASE Q REPEAT V TIMES ( CLEAR Q )
CLEAR V CLEAR Y # GC
INCREASE P
REPEAT X TIMES (
REPEAT P TIMES ( INCREASE V )
INCREASE P REPEAT V TIMES ( CLEAR P ) CLEAR V
# GETS DIVIDED NUMBER
REPEAT P TIMES ( INCREASE Y )
)
REPEAT P TIMES ( INCREASE V ) INCREASE P REPEAT V TIMES ( CLEAR P )
CLEAR V CLEAR X # GC
INCREASE O
REPEAT Y TIMES (
REPEAT O TIMES ( INCREASE V )
INCREASE O REPEAT V TIMES ( CLEAR O ) CLEAR V
# GETS DIVIDED NUMBER
REPEAT O TIMES ( INCREASE X )
)
REPEAT O TIMES ( INCREASE V ) INCREASE O REPEAT V TIMES ( CLEAR O )
CLEAR V CLEAR Y # GC
INCREASE N
REPEAT X TIMES (
REPEAT N TIMES ( INCREASE V )
INCREASE N REPEAT V TIMES ( CLEAR N ) CLEAR V
# GETS DIVIDED NUMBER
REPEAT N TIMES ( INCREASE Y )
)
REPEAT N TIMES ( INCREASE V ) INCREASE N REPEAT V TIMES ( CLEAR N )
CLEAR V CLEAR X # GC
INCREASE M
REPEAT Y TIMES (
REPEAT M TIMES ( INCREASE V )
INCREASE M REPEAT V TIMES ( CLEAR M ) CLEAR V
# GETS DIVIDED NUMBER
REPEAT M TIMES ( INCREASE X )
)
REPEAT M TIMES ( INCREASE V ) INCREASE M REPEAT V TIMES ( CLEAR M )
CLEAR V CLEAR Y # GC
INCREASE L
REPEAT X TIMES (
REPEAT L TIMES ( INCREASE V )
INCREASE L REPEAT V TIMES ( CLEAR L ) CLEAR V
# GETS DIVIDED NUMBER
REPEAT L TIMES ( INCREASE Y )
)
REPEAT L TIMES ( INCREASE V ) INCREASE L REPEAT V TIMES ( CLEAR L )
CLEAR V CLEAR X # GC
INCREASE K
REPEAT Y TIMES (
REPEAT K TIMES ( INCREASE V )
INCREASE K REPEAT V TIMES ( CLEAR K ) CLEAR V
# GETS DIVIDED NUMBER
REPEAT K TIMES ( INCREASE X )
)
REPEAT K TIMES ( INCREASE V ) INCREASE K REPEAT V TIMES ( CLEAR K )
CLEAR V CLEAR Y # GC
INCREASE J
REPEAT X TIMES (
REPEAT J TIMES ( INCREASE V )
INCREASE J REPEAT V TIMES ( CLEAR J ) CLEAR V
# GETS DIVIDED NUMBER
REPEAT J TIMES ( INCREASE Y )
)
REPEAT J TIMES ( INCREASE V ) INCREASE J REPEAT V TIMES ( CLEAR J )
CLEAR V CLEAR X # GC
INCREASE I
REPEAT Y TIMES (
REPEAT I TIMES ( INCREASE V )
INCREASE I REPEAT V TIMES ( CLEAR I ) CLEAR V
# GETS DIVIDED NUMBER
REPEAT I TIMES ( INCREASE X )
)
REPEAT I TIMES ( INCREASE V ) INCREASE I REPEAT V TIMES ( CLEAR I )
CLEAR V CLEAR Y # GC
# Binary representation
#PRINT A
#PRINT B
#PRINT C
#PRINT D
#PRINT E
#PRINT F
#PRINT G
#PRINT H
#PRINT I
#PRINT J
#PRINT K
#PRINT L
#PRINT M
#PRINT N
#PRINT O
#PRINT P
#PRINT Q
#PRINT R
# Main loop
REPEAT W TIMES (
# this could be turned into a binary check: if Z == 1.
INCREASE T
REPEAT Z TIMES ( # At max this uses 4 million cmds.
REPEAT U TIMES (
CLEAR U
CLEAR T
)
INCREASE U
)
CLEAR U # GC
REPEAT T TIMES ( INCREASE U ) INCREASE T REPEAT U TIMES ( CLEAR T )
CLEAR U # GC
# IF Z != 1:
REPEAT T TIMES (
CLEAR T # GC
INCREASE X
REPEAT R TIMES (
CLEAR X
#Z = 3Z + 1 (bitwise)
# 3*Z
REPEAT Q TIMES ( INCREASE Y ) REPEAT R TIMES ( INCREASE Q ) REPEAT U TIMES ( INCREASE Q )
REPEAT Q TIMES ( CLEAR Q INCREASE Q CLEAR U REPEAT V TIMES ( CLEAR Q CLEAR U INCREASE U REPEAT T TIMES ( INCREASE Q ) CLEAR T INCREASE T ) INCREASE V )
CLEAR V CLEAR T # GC
REPEAT P TIMES ( INCREASE S ) REPEAT Y TIMES ( INCREASE P ) REPEAT U TIMES ( INCREASE P )
REPEAT P TIMES ( CLEAR P INCREASE P CLEAR U REPEAT V TIMES ( CLEAR P CLEAR U INCREASE U REPEAT T TIMES ( INCREASE P ) CLEAR T INCREASE T ) INCREASE V )
CLEAR V CLEAR T CLEAR Y # GC
REPEAT O TIMES ( INCREASE Y ) REPEAT S TIMES ( INCREASE O ) REPEAT U TIMES ( INCREASE O )
REPEAT O TIMES ( CLEAR O INCREASE O CLEAR U REPEAT V TIMES ( CLEAR O CLEAR U INCREASE U REPEAT T TIMES ( INCREASE O ) CLEAR T INCREASE T ) INCREASE V )
CLEAR V CLEAR T CLEAR S # GC
REPEAT N TIMES ( INCREASE S ) REPEAT Y TIMES ( INCREASE N ) REPEAT U TIMES ( INCREASE N )
REPEAT N TIMES ( CLEAR N INCREASE N CLEAR U REPEAT V TIMES ( CLEAR N CLEAR U INCREASE U REPEAT T TIMES ( INCREASE N ) CLEAR T INCREASE T ) INCREASE V )
CLEAR V CLEAR T CLEAR Y # GC
REPEAT M TIMES ( INCREASE Y ) REPEAT S TIMES ( INCREASE M ) REPEAT U TIMES ( INCREASE M )
REPEAT M TIMES ( CLEAR M INCREASE M CLEAR U REPEAT V TIMES ( CLEAR M CLEAR U INCREASE U REPEAT T TIMES ( INCREASE M ) CLEAR T INCREASE T ) INCREASE V )
CLEAR V CLEAR T CLEAR S # GC
REPEAT L TIMES ( INCREASE S ) REPEAT Y TIMES ( INCREASE L ) REPEAT U TIMES ( INCREASE L )
REPEAT L TIMES ( CLEAR L INCREASE L CLEAR U REPEAT V TIMES ( CLEAR L CLEAR U INCREASE U REPEAT T TIMES ( INCREASE L ) CLEAR T INCREASE T ) INCREASE V )
CLEAR V CLEAR T CLEAR Y # GC
REPEAT K TIMES ( INCREASE Y ) REPEAT S TIMES ( INCREASE K ) REPEAT U TIMES ( INCREASE K )
REPEAT K TIMES ( CLEAR K INCREASE K CLEAR U REPEAT V TIMES ( CLEAR K CLEAR U INCREASE U REPEAT T TIMES ( INCREASE K ) CLEAR T INCREASE T ) INCREASE V )
CLEAR V CLEAR T CLEAR S # GC
REPEAT J TIMES ( INCREASE S ) REPEAT Y TIMES ( INCREASE J ) REPEAT U TIMES ( INCREASE J )
REPEAT J TIMES ( CLEAR J INCREASE J CLEAR U REPEAT V TIMES ( CLEAR J CLEAR U INCREASE U REPEAT T TIMES ( INCREASE J ) CLEAR T INCREASE T ) INCREASE V )
CLEAR V CLEAR T CLEAR Y # GC
REPEAT I TIMES ( INCREASE Y ) REPEAT S TIMES ( INCREASE I ) REPEAT U TIMES ( INCREASE I )
REPEAT I TIMES ( CLEAR I INCREASE I CLEAR U REPEAT V TIMES ( CLEAR I CLEAR U INCREASE U REPEAT T TIMES ( INCREASE I ) CLEAR T INCREASE T ) INCREASE V )
CLEAR V CLEAR T CLEAR S # GC
REPEAT H TIMES ( INCREASE S ) REPEAT Y TIMES ( INCREASE H ) REPEAT U TIMES ( INCREASE H )
REPEAT H TIMES ( CLEAR H INCREASE H CLEAR U REPEAT V TIMES ( CLEAR H CLEAR U INCREASE U REPEAT T TIMES ( INCREASE H ) CLEAR T INCREASE T ) INCREASE V )
CLEAR V CLEAR T CLEAR Y # GC
REPEAT G TIMES ( INCREASE Y ) REPEAT S TIMES ( INCREASE G ) REPEAT U TIMES ( INCREASE G )
REPEAT G TIMES ( CLEAR G INCREASE G CLEAR U REPEAT V TIMES ( CLEAR G CLEAR U INCREASE U REPEAT T TIMES ( INCREASE G ) CLEAR T INCREASE T ) INCREASE V )
CLEAR V CLEAR T CLEAR S # GC
REPEAT F TIMES ( INCREASE S ) REPEAT Y TIMES ( INCREASE F ) REPEAT U TIMES ( INCREASE F )
REPEAT F TIMES ( CLEAR F INCREASE F CLEAR U REPEAT V TIMES ( CLEAR F CLEAR U INCREASE U REPEAT T TIMES ( INCREASE F ) CLEAR T INCREASE T ) INCREASE V )
CLEAR V CLEAR T CLEAR Y # GC
REPEAT E TIMES ( INCREASE Y ) REPEAT S TIMES ( INCREASE E ) REPEAT U TIMES ( INCREASE E )
REPEAT E TIMES ( CLEAR E INCREASE E CLEAR U REPEAT V TIMES ( CLEAR E CLEAR U INCREASE U REPEAT T TIMES ( INCREASE E ) CLEAR T INCREASE T ) INCREASE V )
CLEAR V CLEAR T CLEAR S # GC
REPEAT D TIMES ( INCREASE S ) REPEAT Y TIMES ( INCREASE D ) REPEAT U TIMES ( INCREASE D )
REPEAT D TIMES ( CLEAR D INCREASE D CLEAR U REPEAT V TIMES ( CLEAR D CLEAR U INCREASE U REPEAT T TIMES ( INCREASE D ) CLEAR T INCREASE T ) INCREASE V )
CLEAR V CLEAR T CLEAR Y # GC
REPEAT C TIMES ( INCREASE Y ) REPEAT S TIMES ( INCREASE C ) REPEAT U TIMES ( INCREASE C )
REPEAT C TIMES ( CLEAR C INCREASE C CLEAR U REPEAT V TIMES ( CLEAR C CLEAR U INCREASE U REPEAT T TIMES ( INCREASE C ) CLEAR T INCREASE T ) INCREASE V )
CLEAR V CLEAR T CLEAR S # GC
REPEAT B TIMES ( INCREASE S ) REPEAT Y TIMES ( INCREASE B ) REPEAT U TIMES ( INCREASE B )
REPEAT B TIMES ( CLEAR B INCREASE B CLEAR U REPEAT V TIMES ( CLEAR B CLEAR U INCREASE U REPEAT T TIMES ( INCREASE B ) CLEAR T INCREASE T ) INCREASE V )
CLEAR V CLEAR T CLEAR Y # GC
REPEAT A TIMES ( INCREASE Y ) REPEAT S TIMES ( INCREASE A ) REPEAT U TIMES ( INCREASE A )
REPEAT A TIMES ( CLEAR A INCREASE A CLEAR U REPEAT V TIMES ( CLEAR A CLEAR U INCREASE U REPEAT T TIMES ( INCREASE A ) CLEAR T INCREASE T ) INCREASE V )
CLEAR V CLEAR T CLEAR S # GC
# +1
# U-variable will be carryover.
INCREASE R
REPEAT R TIMES ( REPEAT V TIMES ( INCREASE U CLEAR R ) INCREASE V )
CLEAR V # GC
REPEAT U TIMES (
CLEAR U #GC
INCREASE Q
REPEAT Q TIMES ( REPEAT V TIMES ( INCREASE U CLEAR Q ) INCREASE V )
CLEAR V # GC
REPEAT U TIMES (
CLEAR U #GC
INCREASE P
REPEAT P TIMES ( REPEAT V TIMES ( INCREASE U CLEAR P ) INCREASE V )
CLEAR V # GC
REPEAT U TIMES (
CLEAR U #GC
INCREASE O
REPEAT O TIMES ( REPEAT V TIMES ( INCREASE U CLEAR O ) INCREASE V )
CLEAR V # GC
REPEAT U TIMES (
CLEAR U #GC
INCREASE N
REPEAT N TIMES ( REPEAT V TIMES ( INCREASE U CLEAR N ) INCREASE V )
CLEAR V # GC
REPEAT U TIMES (
CLEAR U #GC
INCREASE M
REPEAT M TIMES ( REPEAT V TIMES ( INCREASE U CLEAR M ) INCREASE V )
CLEAR V # GC
REPEAT U TIMES (
CLEAR U #GC
INCREASE L
REPEAT L TIMES ( REPEAT V TIMES ( INCREASE U CLEAR L ) INCREASE V )
CLEAR V # GC
REPEAT U TIMES (
CLEAR U #GC
INCREASE K
REPEAT K TIMES ( REPEAT V TIMES ( INCREASE U CLEAR K ) INCREASE V )
CLEAR V # GC
REPEAT U TIMES (
CLEAR U #GC
INCREASE J
REPEAT J TIMES ( REPEAT V TIMES ( INCREASE U CLEAR J ) INCREASE V )
CLEAR V # GC
REPEAT U TIMES (
CLEAR U #GC
INCREASE I
REPEAT I TIMES ( REPEAT V TIMES ( INCREASE U CLEAR I ) INCREASE V )
CLEAR V # GC
REPEAT U TIMES (
CLEAR U #GC
INCREASE H
REPEAT H TIMES ( REPEAT V TIMES ( INCREASE U CLEAR H ) INCREASE V )
CLEAR V # GC
REPEAT U TIMES (
CLEAR U #GC
INCREASE G
REPEAT G TIMES ( REPEAT V TIMES ( INCREASE U CLEAR G ) INCREASE V )
CLEAR V # GC
REPEAT U TIMES (
CLEAR U #GC
INCREASE F
REPEAT F TIMES ( REPEAT V TIMES ( INCREASE U CLEAR F ) INCREASE V )
CLEAR V # GC
REPEAT U TIMES (
CLEAR U #GC
INCREASE E
REPEAT E TIMES ( REPEAT V TIMES ( INCREASE U CLEAR E ) INCREASE V )
CLEAR V # GC
REPEAT U TIMES (
CLEAR U #GC
INCREASE D
REPEAT D TIMES ( REPEAT V TIMES ( INCREASE U CLEAR D ) INCREASE V )
CLEAR V # GC
REPEAT U TIMES (
CLEAR U #GC
INCREASE C
REPEAT C TIMES ( REPEAT V TIMES ( INCREASE U CLEAR C ) INCREASE V )
CLEAR V # GC
REPEAT U TIMES (
CLEAR U #GC
INCREASE B
REPEAT B TIMES ( REPEAT V TIMES ( INCREASE U CLEAR B ) INCREASE V )
CLEAR V # GC
REPEAT U TIMES (
CLEAR U #GC
INCREASE A
REPEAT A TIMES ( REPEAT V TIMES ( INCREASE U CLEAR A ) INCREASE V )
CLEAR V # GC
)
)
)
)
)
)
)
)
)
)
)
)
)
)
)
)
)
CLEAR U #GC is this really needed? I think its needed
)
# IF NUM % 2 == 0
REPEAT X TIMES (
CLEAR X # GC
# Z = Z/2 (bitwise)
INCREASE V
REPEAT Q TIMES ( CLEAR V CLEAR R INCREASE R )
REPEAT V TIMES ( CLEAR R )
CLEAR V #GC
INCREASE V
REPEAT P TIMES ( CLEAR V CLEAR Q INCREASE Q )
REPEAT V TIMES ( CLEAR Q )
CLEAR V #GC
INCREASE V
REPEAT O TIMES ( CLEAR V CLEAR P INCREASE P )
REPEAT V TIMES ( CLEAR P )
CLEAR V #GC
INCREASE V
REPEAT N TIMES ( CLEAR V CLEAR O INCREASE O )
REPEAT V TIMES ( CLEAR O )
CLEAR V #GC
INCREASE V
REPEAT M TIMES ( CLEAR V CLEAR N INCREASE N )
REPEAT V TIMES ( CLEAR N )
CLEAR V #GC
INCREASE V
REPEAT L TIMES ( CLEAR V CLEAR M INCREASE M )
REPEAT V TIMES ( CLEAR M )
CLEAR V #GC
INCREASE V
REPEAT K TIMES ( CLEAR V CLEAR L INCREASE L )
REPEAT V TIMES ( CLEAR L )
CLEAR V #GC
INCREASE V
REPEAT J TIMES ( CLEAR V CLEAR K INCREASE K )
REPEAT V TIMES ( CLEAR K )
CLEAR V #GC
INCREASE V
REPEAT I TIMES ( CLEAR V CLEAR J INCREASE J )
REPEAT V TIMES ( CLEAR J )
CLEAR V #GC
INCREASE V
REPEAT H TIMES ( CLEAR V CLEAR I INCREASE I )
REPEAT V TIMES ( CLEAR I )
CLEAR V #GC
INCREASE V
REPEAT G TIMES ( CLEAR V CLEAR H INCREASE H )
REPEAT V TIMES ( CLEAR H )
CLEAR V #GC
INCREASE V
REPEAT F TIMES ( CLEAR V CLEAR G INCREASE G )
REPEAT V TIMES ( CLEAR G )
CLEAR V #GC
INCREASE V
REPEAT E TIMES ( CLEAR V CLEAR F INCREASE F )
REPEAT V TIMES ( CLEAR F )
CLEAR V #GC
INCREASE V
REPEAT D TIMES ( CLEAR V CLEAR E INCREASE E )
REPEAT V TIMES ( CLEAR E )
CLEAR V #GC
INCREASE V
REPEAT C TIMES ( CLEAR V CLEAR D INCREASE D )
REPEAT V TIMES ( CLEAR D )
CLEAR V #GC
INCREASE V
REPEAT B TIMES ( CLEAR V CLEAR C INCREASE C )
REPEAT V TIMES ( CLEAR C )
CLEAR V #GC
#INCREASE V
#REPEAT A TIMES ( CLEAR V CLEAR B INCREASE B CLEAR A ) # Clears A since its the last bit.
#REPEAT V TIMES ( CLEAR B )
#CLEAR V #GC
)
# IF NUM % 2 != 0
# TURN BINARY INTO DECIMAL AND PRINT
# Number 2
INCREASE U
INCREASE U
CLEAR X CLEAR Z
REPEAT A TIMES ( INCREASE X )
REPEAT X TIMES ( REPEAT U TIMES ( INCREASE Z ) ) CLEAR X
REPEAT B TIMES ( INCREASE Z )
REPEAT Z TIMES ( REPEAT U TIMES ( INCREASE X ) ) CLEAR Z
REPEAT C TIMES ( INCREASE X )
REPEAT X TIMES ( REPEAT U TIMES ( INCREASE Z ) ) CLEAR X
REPEAT D TIMES ( INCREASE Z )
REPEAT Z TIMES ( REPEAT U TIMES ( INCREASE X ) ) CLEAR Z
REPEAT E TIMES ( INCREASE X )
REPEAT X TIMES ( REPEAT U TIMES ( INCREASE Z ) ) CLEAR X
REPEAT F TIMES ( INCREASE Z )
REPEAT Z TIMES ( REPEAT U TIMES ( INCREASE X ) ) CLEAR Z
REPEAT G TIMES ( INCREASE X )
REPEAT X TIMES ( REPEAT U TIMES ( INCREASE Z ) ) CLEAR X
REPEAT H TIMES ( INCREASE Z )
REPEAT Z TIMES ( REPEAT U TIMES ( INCREASE X ) ) CLEAR Z
REPEAT I TIMES ( INCREASE X )
REPEAT X TIMES ( REPEAT U TIMES ( INCREASE Z ) ) CLEAR X
REPEAT J TIMES ( INCREASE Z )
REPEAT Z TIMES ( REPEAT U TIMES ( INCREASE X ) ) CLEAR Z
REPEAT K TIMES ( INCREASE X )
REPEAT X TIMES ( REPEAT U TIMES ( INCREASE Z ) ) CLEAR X
REPEAT L TIMES ( INCREASE Z )
REPEAT Z TIMES ( REPEAT U TIMES ( INCREASE X ) ) CLEAR Z
REPEAT M TIMES ( INCREASE X )
REPEAT X TIMES ( REPEAT U TIMES ( INCREASE Z ) ) CLEAR X
REPEAT N TIMES ( INCREASE Z )
REPEAT Z TIMES ( REPEAT U TIMES ( INCREASE X ) ) CLEAR Z
REPEAT O TIMES ( INCREASE X )
REPEAT X TIMES ( REPEAT U TIMES ( INCREASE Z ) ) CLEAR X
REPEAT P TIMES ( INCREASE Z )
REPEAT Z TIMES ( REPEAT U TIMES ( INCREASE X ) ) CLEAR Z
REPEAT Q TIMES ( INCREASE X )
REPEAT X TIMES ( REPEAT U TIMES ( INCREASE Z ) ) CLEAR X
REPEAT R TIMES ( INCREASE Z )
PRINT Z
#PRINT J
#PRINT K
#PRINT L
#PRINT M
#PRINT N
#PRINT O
#PRINT P
#PRINT Q
#PRINT R
CLEAR U #GC
)
)