Submission details
Task:Lukujono
Sender:NicholasAhman
Submission time:2025-11-19 20:52:13 +0200
Language:text
Status:READY
Result:0
Feedback
groupverdictscore
#10
Test results
testverdicttimescore
#10.00 s0details

Code

# --- 1. SETUP CONSTANTS ---
# We need a Loop Limit (M) and a One (O) for counters.
# We construct M using exponential doubling to save space.

# Set O to 1
INCREASE O

# Set M to 512 (2^9) to ensure we have enough loops for the sequence.
# 1 -> 2 -> 4 -> 8 ... -> 512
INCREASE M
REPEAT M TIMES (INCREASE M)
REPEAT M TIMES (INCREASE M)
REPEAT M TIMES (INCREASE M)
REPEAT M TIMES (INCREASE M)
REPEAT M TIMES (INCREASE M)
REPEAT M TIMES (INCREASE M)
REPEAT M TIMES (INCREASE M)
REPEAT M TIMES (INCREASE M)
REPEAT M TIMES (INCREASE M)

# Set Flag F to 1. F controls if the program is "Running".
# If F is 0, we stop doing work.
CLEAR F
INCREASE F

# --- 2. MAIN LOOP ---
# Repeats 512 times. Code inside only acts if F is 1.
REPEAT M TIMES (

    # --- STEP A: PRINT CURRENT X ---
    REPEAT F TIMES (
        PRINT X
    )

    # --- STEP B: CHECK IF X IS 1 ---
    # If X is 1, we are done. We must set F to 0.
    # Optimization: We check "Is X == 1" in O(X) time, not O(X^2).
    
    # S will be our "Is One" flag. Assume it is 1 initially.
    CLEAR S
    INCREASE S
    
    # H will be "Has Run Once". Start at 0.
    CLEAR H
    
    # Loop X times.
    # Iteration 1: H is 0. S stays 1. H becomes 1.
    # Iteration 2+: H is 1. S becomes 0. H stays 1.
    REPEAT X TIMES (
        REPEAT H TIMES (CLEAR S)
        CLEAR H
        INCREASE H
    )

    # If S is still 1, then X was 1. We clear the main run flag F.
    REPEAT S TIMES (CLEAR F)

    # --- STEP C: CALCULATE NEXT NUMBER ---
    # Only run if F is still 1 (meaning X was not 1)
    REPEAT F TIMES (
        
        # Copy X to Y for calculation
        CLEAR Y
        REPEAT X TIMES (INCREASE Y)

        # Division by 2 and Modulo
        # Q = Quotient, R = Remainder (0 or 1), E = Even Flag (1 or 0)
        CLEAR Q
        CLEAR R
        CLEAR E
        INCREASE E

        # We iterate Y times (count up to X)
        REPEAT Y TIMES (
            # If R is 1, we are completing a pair -> Increase Quotient
            REPEAT R TIMES (INCREASE Q)

            # Swap R and E (Toggle Even/Odd state)
            # T is a temp variable
            CLEAR T
            REPEAT R TIMES (INCREASE T)
            CLEAR R
            REPEAT E TIMES (INCREASE R)
            CLEAR E
            REPEAT T TIMES (INCREASE E)
        )

        # --- STEP D: APPLY COLLATZ RULES ---
        CLEAR X
        
        # If Even (E=1): X = Q
        REPEAT E TIMES (
            REPEAT Q TIMES (INCREASE X)
        )
        
        # If Odd (R=1): X = 3Y + 1
        REPEAT R TIMES (
            REPEAT Y TIMES (
                INCREASE X
                INCREASE X
                INCREASE X
            )
            INCREASE X
        )
    )
)

Test details

Test 1 (public)

Verdict:

input
(empty)

correct output
(empty)

user output
# --- 1. SETUP CONSTANTS ---
# We need a Loop Limit (M) and...

Feedback: Error: missing opening bracket (