PRINT X INCREASE W INCREASE W INCREASE W INCREASE W REPEAT W TIMES ( REPEAT W TIMES ( REPEAT W TIMES ( REPEAT W TIMES ( INCREASE U ) ) ) ) REPEAT U TIMES ( # 200 TIMES # SET C = {x=1, c=0 ; x=/=1, c=1} - DONE O(X) CLEAR C CLEAR F REPEAT X TIMES ( REPEAT F TIMES ( CLEAR C INCREASE C CLEAR F ) INCREASE F ) REPEAT C TIMES ( # Basically if -> only 1 loop # SET M = X % 2 - DONE O(X) CLEAR M CLEAR F CLEAR O REPEAT X TIMES ( INCREASE M REPEAT M TIMES ( # SET O = M - 1 CLEAR F CLEAR O REPEAT M TIMES ( REPEAT F TIMES ( INCREASE O CLEAR F ) INCREASE F ) ) REPEAT O TIMES ( CLEAR O CLEAR M ) ) # SET E = {M = 0, E = 1; M = 1, E = 0} - DONE # SET E = 1 - DONE O(1) CLEAR E INCREASE E # IF X % 2 == 1 REPEAT M TIMES ( # Basically if -> only 1 loop # X = 3X + 1 O(3X) REPEAT X TIMES ( INCREASE X INCREASE X ) INCREASE X # IF -> ELSE CLEAR E ) # IF X % 2 == 0 REPEAT E TIMES ( # Basically if -> only 1 loop # X = X / 2 CLEAR F CLEAR S CLEAR Z INCREASE Z CLEAR R # DIVIDE BY 2 -> O(X) REPEAT X TIMES ( # IF Z == 2 -> R++ -> Z = 1 REPEAT Z TIMES ( # GET O = Z - 1 CLEAR O CLEAR F REPEAT Z TIMES ( REPEAT F TIMES ( CLEAR F INCREASE O ) INCREASE F ) # IF O == 1 -> Z == 2 REPEAT O TIMES ( INCREASE R CLEAR Z CLEAR O ) ) INCREASE Z ) # SET X = R -> O(X) CLEAR X REPEAT R TIMES ( INCREASE X ) CLEAR R ) PRINT X ) )