| Task: | Tulkki |
| Sender: | aatukaj |
| Submission time: | 2025-10-27 00:55:34 +0200 |
| Language: | Rust (2021) |
| 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.00 s | 1, 2, 3 | details |
| #2 | RUNTIME ERROR | 0.00 s | 1, 2, 3 | details |
| #3 | RUNTIME ERROR | 0.00 s | 1, 2, 3 | details |
| #4 | ACCEPTED | 0.00 s | 1, 2, 3 | details |
| #5 | ACCEPTED | 0.00 s | 1, 2, 3 | details |
| #6 | ACCEPTED | 0.00 s | 1, 2, 3 | details |
| #7 | ACCEPTED | 0.00 s | 2, 3 | details |
| #8 | ACCEPTED | 0.00 s | 2, 3 | details |
| #9 | ACCEPTED | 0.00 s | 2, 3 | details |
| #10 | ACCEPTED | 0.00 s | 2, 3 | details |
| #11 | ACCEPTED | 0.00 s | 2, 3 | details |
| #12 | ACCEPTED | 0.00 s | 2, 3 | details |
| #13 | ACCEPTED | 0.00 s | 3 | details |
| #14 | ACCEPTED | 0.00 s | 3 | details |
| #15 | ACCEPTED | 0.02 s | 3 | details |
| #16 | ACCEPTED | 0.00 s | 3 | details |
| #17 | ACCEPTED | 0.04 s | 3 | details |
| #18 | RUNTIME ERROR | 0.00 s | 3 | details |
Compiler report
warning: unused variable: `i`
--> input/code.rs:75:21
|
75 | for i in 0..val {
| ^ help: if this is intentional, prefix it with an underscore: `_i`
|
= note: `#[warn(unused_variables)]` on by default
warning: 1 warning emittedCode
use std::{
collections::HashMap,
io::{self, Read},
};
struct Parser<'a> {
src: &'a str,
vars: HashMap<char, i32>,
}
#[derive(PartialEq)]
enum Kw {
Clear,
Increase,
Print,
Repeat,
Times,
}
const KWS: [(Kw, &str); 5] = [
(Kw::Clear, "CLEAR"),
(Kw::Increase, "INCREASE"),
(Kw::Print, "PRINT"),
(Kw::Repeat, "REPEAT"),
(Kw::Times, "TIMES"),
];
impl Parser<'_> {
fn bump(&mut self) {
self.src = &self.src[1..];
}
fn parse_keyword(&mut self) -> Kw {
for (kw, s) in KWS {
if self.src.starts_with(s) {
self.src = &self.src[s.len()..];
return kw;
}
}
unreachable!("invalid keyword, src is {}", self.src)
}
fn peek(&self) -> char {
match self.src.chars().next() {
Some(c) => c,
None => '?',
}
}
fn parse(&mut self) {
while self.peek() != '?' && self.peek() != ')' {
self.parse_command();
}
}
fn parse_command(&mut self) {
if self.peek() == ')' {
return;
}
let kw = self.parse_keyword();
// println!("{}", self.src);
let var = self.peek();
self.bump();
match kw {
Kw::Clear => {
self.vars.insert(var, 0);
}
Kw::Increase => {
*self.vars.get_mut(&var).unwrap() += 1;
}
Kw::Print => {
print!("{} ", self.vars.get(&var).unwrap());
}
Kw::Repeat => {
let val = *self.vars.get(&var).unwrap();
assert!(self.parse_keyword() == Kw::Times);
self.bump();
let prv = self.src;
for i in 0..val {
self.src = prv;
// println!("START {i}, src: {}", self.src);
self.parse();
// println!("LOOP {i}, src: {}", self.src);
}
// println!("ENDLOOP, src: {}", self.src);
self.bump();
}
Kw::Times => unreachable!(),
}
}
}
fn main() {
let mut stdin = io::stdin();
let mut buf = String::new();
let _ = stdin.read_to_string(&mut buf);
let filtered = buf
.lines()
.filter(|s| !s.starts_with('#'))
.map(|s| s.chars())
.flatten()
.filter(|c| !c.is_whitespace())
.collect::<String>();
let mut vars = HashMap::new();
for c in 'A'..='Z' {
vars.insert(c, 0);
}
let mut parser = Parser {
src: &filtered,
vars,
};
parser.parse();
println!();
}
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 |
|---|
| 1 |
Error:
thread 'main' panicked at input/code.rs:65:42: called `Option::unwrap()` on a `None` value note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
Test 3 (public)
Group: 1, 2, 3
Verdict: RUNTIME ERROR
| input |
|---|
| # Create number 3 INCREASE X INCREASE X INCREASE X ... |
| correct output |
|---|
| 3 |
| user output |
|---|
| 3 |
Error:
thread 'main' panicked at input/code.rs:39:9: internal error: entered unreachable code: invalid keyword, src is #Thisshouldbe3 note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
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: RUNTIME ERROR
| input |
|---|
| # Efficient algorithm for find... |
| correct output |
|---|
| 2 3 5 7 11 13 17 19 23 29 31 3... |
| user output |
|---|
| (empty) |
Error:
thread 'main' panicked at input/code.rs:39:9: internal error: entered unreachable code: invalid keyword, src is LEARDINCREASEI#Nicetrick)CLEARCINCREASELREPEATDTIMES(INCREASEF))#DeriveddirectlyfromtheGodelianstabilizationlemmaREPEATVTIMES(INCREASEWINCREASEYCLEARAREPEATYTIMES(INCREASEOINCREASEXINCREASEXREPEATLTIMES(INCREASEICLEARN)INCREASEQINCREASEA)INCREASEHCLEARY#ComputesthehomomorphicinverseofagivenmonoidREPEATOTIMES(CLEARCINCREASEAREPEATITIMES(INCREASECREPEATDTIMES(CLEARXCLEARTINCREASEOINCREASEUCLEARM)CLEARV)INCREASEWPRINTAREPEATATIMES(INCREASEB)REPEATBTIMES(REPEATATIMES(INCREASEG#Gistalwaysatleasttwotimesthesizeofthesubspace)PRINTG)REPEATCTIMES(CLEARYINCREASEGINCREASEU)#RunsmostlikelyinpolynomialtimeREPEATATIMES(REPEATATIMES(PRINTGREPEATATIMES(INCREASEGINCREASET))REPEATTTIMES(INCREASEKINCREASEN)REPEATATIMES(INCREASEG))INCREASEQPRINTGREPEATQTIMES(INCREASEG)REPEATATIMES(PRINTGREPEATATIMES(INCREASEG))CLEARSREPEATATIMES(REPEATCTIMES(INCREASEGINCREASEN)PRINTG)REPEATATIMES(CLEARNINCREASEM...
