| Task: | Tulkki |
| Sender: | Lelleri |
| Submission time: | 2025-10-29 13:28:34 +0200 |
| Language: | Python3 (PyPy3) |
| Status: | READY |
| Result: | 100 |
| group | verdict | score |
|---|---|---|
| #1 | ACCEPTED | 12 |
| #2 | ACCEPTED | 32 |
| #3 | ACCEPTED | 56 |
| test | verdict | time | group | |
|---|---|---|---|---|
| #1 | ACCEPTED | 0.06 s | 1, 2, 3 | details |
| #2 | ACCEPTED | 0.07 s | 1, 2, 3 | details |
| #3 | ACCEPTED | 0.06 s | 1, 2, 3 | details |
| #4 | ACCEPTED | 0.06 s | 1, 2, 3 | details |
| #5 | ACCEPTED | 0.08 s | 1, 2, 3 | details |
| #6 | ACCEPTED | 0.09 s | 1, 2, 3 | details |
| #7 | ACCEPTED | 0.06 s | 2, 3 | details |
| #8 | ACCEPTED | 0.06 s | 2, 3 | details |
| #9 | ACCEPTED | 0.06 s | 2, 3 | details |
| #10 | ACCEPTED | 0.06 s | 2, 3 | details |
| #11 | ACCEPTED | 0.06 s | 2, 3 | details |
| #12 | ACCEPTED | 0.06 s | 2, 3 | details |
| #13 | ACCEPTED | 0.06 s | 3 | details |
| #14 | ACCEPTED | 0.06 s | 3 | details |
| #15 | ACCEPTED | 0.16 s | 3 | details |
| #16 | ACCEPTED | 0.07 s | 3 | details |
| #17 | ACCEPTED | 0.24 s | 3 | details |
| #18 | ACCEPTED | 0.13 s | 3 | details |
Code
import sys
from pprint import pprint
execution_lines = []
for line in sys.stdin:
execution_lines.append(line.replace("\n", " "))
execution_line = ""
for line in execution_lines:
new_line = ""
for item in line:
if(item == "#"):
break
new_line += item
execution_line += " " + new_line + " "
arguments = {
"CLEAR": [None, None],
"INCREASE": [None, None],
"PRINT": [None, None],
"REPEAT": [None, None, None, None],
}
def find_block(line, index):
c = 0
for i, item in enumerate(line[index:]):
if(item.strip() == "("):
c+=1
elif(item.strip() == ")"):
c-=1
if(c == 0):
return index, i + index
def parse1(execution_line):
items = []
skip_to_index = -1
for i, arg in enumerate(execution_line):
if(i <= skip_to_index):
continue
if(arg == "("):
start_index, end_index = find_block(execution_line, i)
skip_to_index = end_index
items.append(parse1(execution_line[start_index+1:end_index]))
else:
items.append(arg)
return items
def parse2(execution_line):
execution_index = 0
execution_tree = {}
active_arg = None
for arg in execution_line:
if active_arg == None:
active_arg = arguments[arg][:]
if None in active_arg:
if(type(arg) == list):
active_arg[active_arg.index(None)] = parse2(arg)
else:
active_arg[active_arg.index(None)] = arg
if None not in active_arg:
execution_tree[execution_index] = active_arg
active_arg = None
execution_index += 1
return execution_tree
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}
def execute(commands: dict):
for index in range(len(commands.keys())):
if(commands[index][0] == "INCREASE"):
variables[commands[index][1]] += 1
elif(commands[index][0] == "CLEAR"):
variables[commands[index][1]] = 0
elif(commands[index][0] == "PRINT"):
print(variables[commands[index][1]], end=" ")
elif(commands[index][0] == "REPEAT"):
new_commands = {}
commands_count = len(commands[index][3].keys())
new_commands_count = variables[commands[index][1]] * commands_count
for i in range(new_commands_count):
new_commands[i] = commands[index][3][i%commands_count]
execute(new_commands)
parsed1 = parse1(execution_line.split())
parsed2 = parse2(parsed1)
execute(parsed2)
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 |
|---|
| 3 |
| user output |
|---|
| 3 |
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... |
