| Task: | Tulkki |
| Sender: | MattiDragon |
| Submission time: | 2025-10-27 16:36:37 +0200 |
| Language: | Java |
| Status: | READY |
| Result: | 0 |
| group | verdict | score |
|---|---|---|
| #1 | RUNTIME ERROR | 0 |
| #2 | RUNTIME ERROR | 0 |
| #3 | RUNTIME ERROR | 0 |
| test | verdict | time | group | |
|---|---|---|---|---|
| #1 | ACCEPTED | 0.12 s | 1, 2, 3 | details |
| #2 | RUNTIME ERROR | 0.17 s | 1, 2, 3 | details |
| #3 | ACCEPTED | 0.13 s | 1, 2, 3 | details |
| #4 | ACCEPTED | 0.14 s | 1, 2, 3 | details |
| #5 | ACCEPTED | 0.18 s | 1, 2, 3 | details |
| #6 | ACCEPTED | 0.23 s | 1, 2, 3 | details |
| #7 | ACCEPTED | 0.13 s | 2, 3 | details |
| #8 | ACCEPTED | 0.13 s | 2, 3 | details |
| #9 | ACCEPTED | 0.12 s | 2, 3 | details |
| #10 | ACCEPTED | 0.12 s | 2, 3 | details |
| #11 | ACCEPTED | 0.13 s | 2, 3 | details |
| #12 | ACCEPTED | 0.14 s | 2, 3 | details |
| #13 | ACCEPTED | 0.13 s | 3 | details |
| #14 | ACCEPTED | 0.14 s | 3 | details |
| #15 | ACCEPTED | 0.16 s | 3 | details |
| #16 | ACCEPTED | 0.13 s | 3 | details |
| #17 | TIME LIMIT EXCEEDED | -- | 3 | details |
| #18 | TIME LIMIT EXCEEDED | -- | 3 | details |
Code
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;
public class C {
static final boolean DEBUG = Boolean.getBoolean("debug");
static final byte CLEAR = 1;
static final byte INCREASE = 2;
static final byte PRINT = 3;
static final byte REPEAT = 4;
static final byte END_REPEAT = 5;
public static void main(String[] args) throws IOException {
var scanner = new Scanner(System.in);
var tokens = new ArrayList<Byte>();
while (scanner.hasNext()) {
var tok = scanner.next();
if (tok.startsWith("#")) {
scanner.nextLine();
continue;
}
switch (tok) {
case "CLEAR":
tokens.add(CLEAR);
break;
case "INCREASE":
tokens.add(INCREASE);
break;
case "PRINT":
tokens.add(PRINT);
break;
case "REPEAT":
tokens.add(REPEAT);
break;
case "TIMES":
case "(":
break;
case ")":
tokens.add(END_REPEAT);
break;
default:
if (tok.length() == 1) {
var c = tok.charAt(0);
if (c >= 'A' && c <= 'Z') {
tokens.add((byte) (c - 'A'));
break;
}
}
throw new IllegalStateException("Unexpected token '" + tok + "'");
}
}
var bytecode = new byte[tokens.size()];
for (var i = 0; i < bytecode.length; i++) {
bytecode[i] = tokens.get(i);
}
if (DEBUG) {
System.out.println(Arrays.toString(bytecode));
System.out.println();
}
var registers = new int[26];
var callstack = new int[1000];
var loopCounters = new int[1000];
var sp = 0;
var ip = 0;
while (ip < bytecode.length) {
if (DEBUG) {
System.out.printf("ip: %s; b[ip]: %s; sp: %s%n", ip, bytecode[ip], sp);
System.out.println("r: " + Arrays.toString(registers));
System.out.print("s: ");
for (int i = 0; i <= sp; i++) {
System.out.print(callstack[i] + "|" + loopCounters[i] + " ");
}
System.out.println();
System.out.println();
}
switch (bytecode[ip++]) {
case CLEAR:
registers[bytecode[ip++]] = 0;
break;
case INCREASE:
registers[bytecode[ip++]] += 1;
break;
case PRINT:
System.out.println(registers[bytecode[ip++]]);
break;
case REPEAT:
loopCounters[sp] = registers[bytecode[ip++]];
callstack[sp++] = ip;
break;
case END_REPEAT:
if (--loopCounters[--sp] == 0) {
break;
} else {
ip = callstack[sp++];
}
break;
default:
break;
}
}
}
}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: RUNTIME ERROR
| input |
|---|
| INCREASE X # aybabtu PRINT X INCREASE # test ... |
| correct output |
|---|
| 1 3 |
| user output |
|---|
| (empty) |
Error:
Exception in thread "main" java.lang.IllegalStateException: Unexpected token 'PRINT#X' at C.main(C.java:52)
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 ... |
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 ... |
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 ... |
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: TIME LIMIT EXCEEDED
| 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 |
|---|
| (empty) |
Test 18 (public)
Group: 3
Verdict: TIME LIMIT EXCEEDED
| input |
|---|
| # Efficient algorithm for find... |
| correct output |
|---|
| 2 3 5 7 11 13 17 19 23 29 31 3... |
| user output |
|---|
| (empty) |
