PRINT X # max number we can reach in the process: 190996 (17 bits), originally max is 1000 (10 bits) # change X into a binary number: variables A-R serve as bits # R CLEAR Y # quotient, result of division CLEAR R # remainder, 0/1, our next bit REPEAT X TIMES ( # the values of R vary 0-1-0-1... CLEAR S REPEAT R TIMES ( INCREASE S INCREASE Y ) INCREASE R REPEAT S TIMES ( CLEAR R ) ) # Q CLEAR X # quotient, result of division CLEAR Q # remainder, 0/1, our next bit REPEAT Y TIMES ( # the values of Q vary 0-1-0-1... CLEAR S REPEAT Q TIMES ( INCREASE S INCREASE X ) INCREASE Q REPEAT S TIMES ( CLEAR Q ) ) # P CLEAR Y # quotient, result of division CLEAR P # remainder, 0/1, our next bit REPEAT X TIMES ( # the values of P vary 0-1-0-1... CLEAR S REPEAT P TIMES ( INCREASE S INCREASE Y ) INCREASE P REPEAT S TIMES ( CLEAR P ) ) # O CLEAR X # quotient, result of division CLEAR O # remainder, 0/1, our next bit REPEAT Y TIMES ( # the values of O vary 0-1-0-1... CLEAR S REPEAT O TIMES ( INCREASE S INCREASE X ) INCREASE O REPEAT S TIMES ( CLEAR O ) ) # N CLEAR Y # quotient, result of division CLEAR N # remainder, 0/1, our next bit REPEAT X TIMES ( # the values of N vary 0-1-0-1... CLEAR S REPEAT N TIMES ( INCREASE S INCREASE Y ) INCREASE N REPEAT S TIMES ( CLEAR N ) ) # M CLEAR X # quotient, result of division CLEAR M # remainder, 0/1, our next bit REPEAT Y TIMES ( # the values of M vary 0-1-0-1... CLEAR S REPEAT M TIMES ( INCREASE S INCREASE X ) INCREASE M REPEAT S TIMES ( CLEAR M ) ) # L CLEAR Y # quotient, result of division CLEAR L # remainder, 0/1, our next bit REPEAT X TIMES ( # the values of L vary 0-1-0-1... CLEAR S REPEAT L TIMES ( INCREASE S INCREASE Y ) INCREASE L REPEAT S TIMES ( CLEAR L ) ) # K CLEAR X # quotient, result of division CLEAR K # remainder, 0/1, our next bit REPEAT Y TIMES ( # the values of K vary 0-1-0-1... CLEAR S REPEAT K TIMES ( INCREASE S INCREASE X ) INCREASE K REPEAT S TIMES ( CLEAR K ) ) # J CLEAR Y # quotient, result of division CLEAR J # remainder, 0/1, our next bit REPEAT X TIMES ( # the values of J vary 0-1-0-1... CLEAR S REPEAT J TIMES ( INCREASE S INCREASE Y ) INCREASE J REPEAT S TIMES ( CLEAR J ) ) # I CLEAR X # quotient, result of division CLEAR I # remainder, 0/1, our next bit REPEAT Y TIMES ( # the values of I vary 0-1-0-1... CLEAR S REPEAT I TIMES ( INCREASE S INCREASE X ) INCREASE I REPEAT S TIMES ( CLEAR I ) ) # V=enough INCREASE V INCREASE V INCREASE V INCREASE V INCREASE V REPEAT V TIMES ( REPEAT V TIMES ( INCREASE V ) ) CLEAR S INCREASE S # S=1 while we continue # compute the sequence REPEAT V TIMES ( REPEAT S TIMES ( # if not 1, proceed # checking if current number is 1 CLEAR Z REPEAT Q TIMES ( # we count how many 0 there are INCREASE Z ) REPEAT P TIMES ( INCREASE Z ) REPEAT O TIMES ( INCREASE Z ) REPEAT N TIMES ( INCREASE Z ) REPEAT M TIMES ( INCREASE Z ) REPEAT L TIMES ( INCREASE Z ) REPEAT K TIMES ( INCREASE Z ) REPEAT J TIMES ( INCREASE Z ) REPEAT I TIMES ( INCREASE Z ) REPEAT H TIMES ( INCREASE Z ) REPEAT G TIMES ( INCREASE Z ) REPEAT F TIMES ( INCREASE Z ) REPEAT E TIMES ( INCREASE Z ) REPEAT D TIMES ( INCREASE Z ) REPEAT C TIMES ( INCREASE Z ) REPEAT B TIMES ( INCREASE Z ) REPEAT A TIMES ( INCREASE Z ) CLEAR S REPEAT Z TIMES ( CLEAR S INCREASE S ) ) REPEAT S TIMES ( # if not 1, proceed CLEAR Z # if Z=1, the number is divisible by 2 INCREASE Z CLEAR T # if T=1, the number is not divisible by 2 REPEAT R TIMES ( CLEAR Z INCREASE T ) # divide by 2: if number is divisible by 2, the last bit R=0 REPEAT Z TIMES ( 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 ) # multiply by 3 plus 1: if number is not divisible by 2, the Z=1 REPEAT T TIMES ( # ---------------------------- CLEAR Z # transfer to the next REPEAT R TIMES ( INCREASE Z ) INCREASE R CLEAR Y REPEAT R TIMES ( # the values of Y vary 0-1-0-1... CLEAR W REPEAT Y TIMES ( INCREASE W INCREASE Z ) INCREASE Y REPEAT W TIMES ( CLEAR Y ) ) CLEAR R REPEAT Y TIMES ( INCREASE R ) # ---------------------------- CLEAR T # transfer to the next REPEAT Q TIMES ( INCREASE T ) REPEAT Z TIMES ( INCREASE Q ) CLEAR Y REPEAT Q TIMES ( # the values of Y vary 0-1-0-1... CLEAR W REPEAT Y TIMES ( INCREASE W INCREASE T ) INCREASE Y REPEAT W TIMES ( CLEAR Y ) ) CLEAR Q REPEAT Y TIMES ( INCREASE Q ) # ---------------------------- CLEAR Z # transfer to the next REPEAT P TIMES ( INCREASE Z ) REPEAT T TIMES ( INCREASE P ) CLEAR Y REPEAT P TIMES ( # the values of Y vary 0-1-0-1... CLEAR W REPEAT Y TIMES ( INCREASE W INCREASE Z ) INCREASE Y REPEAT W TIMES ( CLEAR Y ) ) CLEAR P REPEAT Y TIMES ( INCREASE P ) # ---------------------------- CLEAR T # transfer to the next REPEAT O TIMES ( INCREASE T ) REPEAT Z TIMES ( INCREASE O ) CLEAR Y REPEAT O TIMES ( # the values of Y vary 0-1-0-1... CLEAR W REPEAT Y TIMES ( INCREASE W INCREASE T ) INCREASE Y REPEAT W TIMES ( CLEAR Y ) ) CLEAR O REPEAT Y TIMES ( INCREASE O ) # ---------------------------- CLEAR Z # transfer to the next REPEAT N TIMES ( INCREASE Z ) REPEAT T TIMES ( INCREASE N ) CLEAR Y REPEAT N TIMES ( # the values of Y vary 0-1-0-1... CLEAR W REPEAT Y TIMES ( INCREASE W INCREASE Z ) INCREASE Y REPEAT W TIMES ( CLEAR Y ) ) CLEAR N REPEAT Y TIMES ( INCREASE N ) # ---------------------------- CLEAR T # transfer to the next REPEAT M TIMES ( INCREASE T ) REPEAT Z TIMES ( INCREASE M ) CLEAR Y REPEAT M TIMES ( # the values of Y vary 0-1-0-1... CLEAR W REPEAT Y TIMES ( INCREASE W INCREASE T ) INCREASE Y REPEAT W TIMES ( CLEAR Y ) ) CLEAR M REPEAT Y TIMES ( INCREASE M ) # ---------------------------- CLEAR Z # transfer to the next REPEAT L TIMES ( INCREASE Z ) REPEAT T TIMES ( INCREASE L ) CLEAR Y REPEAT L TIMES ( # the values of Y vary 0-1-0-1... CLEAR W REPEAT Y TIMES ( INCREASE W INCREASE Z ) INCREASE Y REPEAT W TIMES ( CLEAR Y ) ) CLEAR L REPEAT Y TIMES ( INCREASE L ) # ---------------------------- CLEAR T # transfer to the next REPEAT K TIMES ( INCREASE T ) REPEAT Z TIMES ( INCREASE K ) CLEAR Y REPEAT K TIMES ( # the values of Y vary 0-1-0-1... CLEAR W REPEAT Y TIMES ( INCREASE W INCREASE T ) INCREASE Y REPEAT W TIMES ( CLEAR Y ) ) CLEAR K REPEAT Y TIMES ( INCREASE K ) # ---------------------------- CLEAR Z # transfer to the next REPEAT J TIMES ( INCREASE Z ) REPEAT T TIMES ( INCREASE J ) CLEAR Y REPEAT J TIMES ( # the values of Y vary 0-1-0-1... CLEAR W REPEAT Y TIMES ( INCREASE W INCREASE Z ) INCREASE Y REPEAT W TIMES ( CLEAR Y ) ) CLEAR J REPEAT Y TIMES ( INCREASE J ) # ---------------------------- CLEAR T # transfer to the next REPEAT I TIMES ( INCREASE T ) REPEAT Z TIMES ( INCREASE I ) CLEAR Y REPEAT I TIMES ( # the values of Y vary 0-1-0-1... CLEAR W REPEAT Y TIMES ( INCREASE W INCREASE T ) INCREASE Y REPEAT W TIMES ( CLEAR Y ) ) CLEAR I REPEAT Y TIMES ( INCREASE I ) # ---------------------------- CLEAR Z # transfer to the next REPEAT H TIMES ( INCREASE Z ) REPEAT T TIMES ( INCREASE H ) CLEAR Y REPEAT H TIMES ( # the values of Y vary 0-1-0-1... CLEAR W REPEAT Y TIMES ( INCREASE W INCREASE Z ) INCREASE Y REPEAT W TIMES ( CLEAR Y ) ) CLEAR H REPEAT Y TIMES ( INCREASE H ) # ---------------------------- CLEAR T # transfer to the next REPEAT G TIMES ( INCREASE T ) REPEAT Z TIMES ( INCREASE G ) CLEAR Y REPEAT G TIMES ( # the values of Y vary 0-1-0-1... CLEAR W REPEAT Y TIMES ( INCREASE W INCREASE T ) INCREASE Y REPEAT W TIMES ( CLEAR Y ) ) CLEAR G REPEAT Y TIMES ( INCREASE G ) # ---------------------------- CLEAR Z # transfer to the next REPEAT F TIMES ( INCREASE Z ) REPEAT T TIMES ( INCREASE F ) CLEAR Y REPEAT F TIMES ( # the values of Y vary 0-1-0-1... CLEAR W REPEAT Y TIMES ( INCREASE W INCREASE Z ) INCREASE Y REPEAT W TIMES ( CLEAR Y ) ) CLEAR F REPEAT Y TIMES ( INCREASE F ) # ---------------------------- CLEAR T # transfer to the next REPEAT E TIMES ( INCREASE T ) REPEAT Z TIMES ( INCREASE E ) CLEAR Y REPEAT E TIMES ( # the values of Y vary 0-1-0-1... CLEAR W REPEAT Y TIMES ( INCREASE W INCREASE T ) INCREASE Y REPEAT W TIMES ( CLEAR Y ) ) CLEAR E REPEAT Y TIMES ( INCREASE E ) # ---------------------------- CLEAR Z # transfer to the next REPEAT D TIMES ( INCREASE Z ) REPEAT T TIMES ( INCREASE D ) CLEAR Y REPEAT D TIMES ( # the values of Y vary 0-1-0-1... CLEAR W REPEAT Y TIMES ( INCREASE W INCREASE Z ) INCREASE Y REPEAT W TIMES ( CLEAR Y ) ) CLEAR D REPEAT Y TIMES ( INCREASE D ) # ---------------------------- CLEAR T # transfer to the next REPEAT C TIMES ( INCREASE T ) REPEAT Z TIMES ( INCREASE C ) CLEAR Y REPEAT C TIMES ( # the values of Y vary 0-1-0-1... CLEAR W REPEAT Y TIMES ( INCREASE W INCREASE T ) INCREASE Y REPEAT W TIMES ( CLEAR Y ) ) CLEAR C REPEAT Y TIMES ( INCREASE C ) # processing B - deleted # processing A - deleted ) # convert the number back CLEAR X # this is the current number CLEAR Y # power of 2 INCREASE Y CLEAR T # how many bits have been 0 REPEAT R TIMES ( REPEAT Y TIMES ( INCREASE X ) ) INCREASE T REPEAT Q TIMES ( REPEAT T TIMES ( REPEAT Y TIMES ( INCREASE Y ) ) REPEAT Y TIMES ( INCREASE X ) CLEAR T ) INCREASE T REPEAT P TIMES ( REPEAT T TIMES ( REPEAT Y TIMES ( INCREASE Y ) ) REPEAT Y TIMES ( INCREASE X ) CLEAR T ) INCREASE T REPEAT O TIMES ( REPEAT T TIMES ( REPEAT Y TIMES ( INCREASE Y ) ) REPEAT Y TIMES ( INCREASE X ) CLEAR T ) INCREASE T REPEAT N TIMES ( REPEAT T TIMES ( REPEAT Y TIMES ( INCREASE Y ) ) REPEAT Y TIMES ( INCREASE X ) CLEAR T ) INCREASE T REPEAT M TIMES ( REPEAT T TIMES ( REPEAT Y TIMES ( INCREASE Y ) ) REPEAT Y TIMES ( INCREASE X ) CLEAR T ) INCREASE T REPEAT L TIMES ( REPEAT T TIMES ( REPEAT Y TIMES ( INCREASE Y ) ) REPEAT Y TIMES ( INCREASE X ) CLEAR T ) INCREASE T REPEAT K TIMES ( REPEAT T TIMES ( REPEAT Y TIMES ( INCREASE Y ) ) REPEAT Y TIMES ( INCREASE X ) CLEAR T ) INCREASE T REPEAT J TIMES ( REPEAT T TIMES ( REPEAT Y TIMES ( INCREASE Y ) ) REPEAT Y TIMES ( INCREASE X ) CLEAR T ) INCREASE T REPEAT I TIMES ( REPEAT T TIMES ( REPEAT Y TIMES ( INCREASE Y ) ) REPEAT Y TIMES ( INCREASE X ) CLEAR T ) INCREASE T REPEAT H TIMES ( REPEAT T TIMES ( REPEAT Y TIMES ( INCREASE Y ) ) REPEAT Y TIMES ( INCREASE X ) CLEAR T ) INCREASE T REPEAT G TIMES ( REPEAT T TIMES ( REPEAT Y TIMES ( INCREASE Y ) ) REPEAT Y TIMES ( INCREASE X ) CLEAR T ) INCREASE T REPEAT F TIMES ( REPEAT T TIMES ( REPEAT Y TIMES ( INCREASE Y ) ) REPEAT Y TIMES ( INCREASE X ) CLEAR T ) INCREASE T REPEAT E TIMES ( REPEAT T TIMES ( REPEAT Y TIMES ( INCREASE Y ) ) REPEAT Y TIMES ( INCREASE X ) CLEAR T ) INCREASE T REPEAT D TIMES ( REPEAT T TIMES ( REPEAT Y TIMES ( INCREASE Y ) ) REPEAT Y TIMES ( INCREASE X ) CLEAR T ) INCREASE T REPEAT C TIMES ( REPEAT T TIMES ( REPEAT Y TIMES ( INCREASE Y ) ) REPEAT Y TIMES ( INCREASE X ) CLEAR T ) # processing B - deleted # processing A - deleted PRINT X ) )