Submission details
Task:Tulkki
Sender:dankke
Submission time:2025-11-01 10:44:03 +0200
Language:Python3 (PyPy3)
Status:READY
Result:100
Feedback
groupverdictscore
#1ACCEPTED12
#2ACCEPTED32
#3ACCEPTED56
Test results
testverdicttimegroup
#1ACCEPTED0.06 s1, 2, 3details
#2ACCEPTED0.06 s1, 2, 3details
#3ACCEPTED0.06 s1, 2, 3details
#4ACCEPTED0.06 s1, 2, 3details
#5ACCEPTED0.09 s1, 2, 3details
#6ACCEPTED0.09 s1, 2, 3details
#7ACCEPTED0.06 s2, 3details
#8ACCEPTED0.06 s2, 3details
#9ACCEPTED0.06 s2, 3details
#10ACCEPTED0.06 s2, 3details
#11ACCEPTED0.06 s2, 3details
#12ACCEPTED0.06 s2, 3details
#13ACCEPTED0.06 s3details
#14ACCEPTED0.06 s3details
#15ACCEPTED0.14 s3details
#16ACCEPTED0.07 s3details
#17ACCEPTED0.22 s3details
#18ACCEPTED0.11 s3details

Code

import re

variables = {
    "A" : 0,
    "B" : 0,
    "C" : 0,
    "D" : 0,
    "E" : 0,
    "F" : 0,
    "G" : 0,
    "H" : 0,
    "I" : 0,
    "J" : 0,
    "K" : 0,
    "L" : 0,
    "M" : 0,
    "N" : 0,
    "O" : 0,
    "P" : 0,
    "Q" : 0,
    "R" : 0,
    "S" : 0,
    "T" : 0,
    "U" : 0,
    "V" : 0,
    "W" : 0,
    "X" : 0,
    "Y" : 0,
    "Z" : 0
}

program = ""
while True:
    try:
        line = input()
        if line == "ä":
            raise
        program = program + line + "\n "
    except:
        break

program = re.sub("#.*\n", " ", program)
program = re.sub("[\t|\n]", " ", program)
program = re.sub(" +", " ", program)
program = re.sub("INCREASE ", "I", program)
program = re.sub("CLEAR ", "C", program)
program = re.sub("PRINT ", "P", program)
program = re.sub("REPEAT ", "R", program)
program = re.sub("TIMES ", "", program)

commands = program.split()


pointer = 0
brackets_open = 0
loops = []

while pointer < len(commands):
    command = commands[pointer]
    if command.startswith("I"):
        variables[command[1]] += 1
    elif command.startswith("C"):
        variables[command[1]] = 0
    elif command.startswith("P"):
        print(variables[command[1]], end=" ")
    elif command.startswith("R"):
        pointer += 1
        brackets_open += 1
        times = variables[command[1]]
        # Skip loop
        if times == 0:
            brackets_at_start = brackets_open -1
            while True:
                pointer += 1
                if commands[pointer] == "(":
                    brackets_open += 1
                elif commands[pointer] == ")":
                    brackets_open -= 1
                if brackets_open == brackets_at_start:
                    break
        else:
            loops.append([times, 0, pointer])
    elif command == ")":
        loops[-1][1] += 1
        if loops[-1][0] > loops[-1][1]:
            pointer = loops[-1][2]
        else:
            loops.pop()
            brackets_open -= 1
    pointer += 1
    

Test details

Test 1 (public)

Group: 1, 2, 3

Verdict: ACCEPTED

input
PRINT X
INCREASE X
PRINT X
INCREASE X
PRINT X
...

correct output
0 1 2 0 

user output
0 1 2 0 

Test 2 (public)

Group: 1, 2, 3

Verdict: ACCEPTED

input
INCREASE
X
# aybabtu
   PRINT    X
INCREASE # test
...

correct output
1 3 

user output
1 3 

Test 3 (public)

Group: 1, 2, 3

Verdict: ACCEPTED

input
# Create number 3
INCREASE X
INCREASE X
INCREASE X

...

correct output

user output

Test 4 (public)

Group: 1, 2, 3

Verdict: ACCEPTED

input
INCREASE A
PRINT A
INCREASE B
PRINT B
INCREASE C
...

correct output
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ...

user output
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ...

Test 5 (public)

Group: 1, 2, 3

Verdict: ACCEPTED

input
INCREASE X
INCREASE X
INCREASE X
INCREASE X
INCREASE X
...

correct output
999 

user output
999 

Test 6 (public)

Group: 1, 2, 3

Verdict: ACCEPTED

input
PRINT X
PRINT X
PRINT X
PRINT X
PRINT X
...

correct output
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...

user output
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...

Test 7 (public)

Group: 2, 3

Verdict: ACCEPTED

input
INCREASE A
INCREASE A
INCREASE A
INCREASE A
INCREASE A
...

correct output
5 5 5 5 5 

user output
5 5 5 5 5 

Test 8 (public)

Group: 2, 3

Verdict: ACCEPTED

input
INCREASE A
INCREASE A
INCREASE A
INCREASE A
INCREASE A
...

correct output
0 0 0 0 0 

user output
0 0 0 0 0 

Test 9 (public)

Group: 2, 3

Verdict: ACCEPTED

input
INCREASE A
INCREASE A
INCREASE A
INCREASE A
INCREASE A
...

correct output
6 7 8 9 10 

user output
6 7 8 9 10 

Test 10 (public)

Group: 2, 3

Verdict: ACCEPTED

input
INCREASE A
INCREASE A
INCREASE A
INCREASE A
INCREASE A
...

correct output
5 5 

user output
5 5 

Test 11 (public)

Group: 2, 3

Verdict: ACCEPTED

input
INCREASE A
INCREASE A
INCREASE A
INCREASE A
INCREASE A
...

correct output
20 

user output
20 

Test 12 (public)

Group: 2, 3

Verdict: ACCEPTED

input
INCREASE A
INCREASE A

INCREASE B
INCREASE B
...

correct output
42 

user output
42 

Test 13 (public)

Group: 3

Verdict: ACCEPTED

input
INCREASE A
INCREASE A
INCREASE A
INCREASE A
INCREASE A
...

correct output
1 2 2 3 3 3 4 4 4 4 5 5 5 5 5 

user output
1 2 2 3 3 3 4 4 4 4 5 5 5 5 5 

Test 14 (public)

Group: 3

Verdict: ACCEPTED

input
# Create number 3
INCREASE A INCREASE A INCREASE...

correct output
12 

user output
12 

Test 15 (public)

Group: 3

Verdict: ACCEPTED

input
INCREASE X
INCREASE X
INCREASE X
INCREASE X
INCREASE X
...

correct output
531441 

user output
531441 

Test 16 (public)

Group: 3

Verdict: ACCEPTED

input
INCREASE A
INCREASE A
INCREASE A
INCREASE A
INCREASE A
...

correct output
1337 

user output
1337 

Test 17 (public)

Group: 3

Verdict: ACCEPTED

input
INCREASE A
INCREASE A

REPEAT A TIMES (
    REPEAT A TIMES (
...

correct output
1 2 1 2 1 1 3 4 3 4 3 4 3 4 3 ...

user output
1 2 1 2 1 1 3 4 3 4 3 4 3 4 3 ...

Test 18 (public)

Group: 3

Verdict: ACCEPTED

input
# Efficient algorithm for find...

correct output
2 3 5 7 11 13 17 19 23 29 31 3...

user output
2 3 5 7 11 13 17 19 23 29 31 3...