| Task: | Tulkki |
| Sender: | xheater |
| Submission time: | 2025-11-04 18:01:10 +0200 |
| Language: | Rust (2021) |
| Status: | READY |
| Result: | 0 |
| group | verdict | score |
|---|---|---|
| #1 | WRONG ANSWER | 0 |
| #2 | WRONG ANSWER | 0 |
| #3 | WRONG ANSWER | 0 |
| test | verdict | time | group | |
|---|---|---|---|---|
| #1 | ACCEPTED | 0.00 s | 1, 2, 3 | details |
| #2 | WRONG ANSWER | 0.00 s | 1, 2, 3 | details |
| #3 | ACCEPTED | 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 | ACCEPTED | 0.01 s | 3 | details |
Code
use std::{char, collections::HashMap, io::{self, BufRead}};
#[derive(Debug)]
enum OPERATION{
CLEAR(char),
PRINT(char),
INCREASE(char),
REPEAT(char, Vec<OPERATION>),
}
fn run_operations(list: &Vec<OPERATION>, map: &mut HashMap<char,i32>){
for command in list{
match command {
OPERATION::CLEAR(char) => if let Some(juusto) = map.get_mut(char){*juusto = 0},
OPERATION::PRINT(char) => if let Some(juusto) = map.get_mut(char){print!("{} ", juusto)},
OPERATION::INCREASE(char) => if let Some(juusto) = map.get_mut(char){*juusto += 1},
OPERATION::REPEAT(char , juustot) => if let Some(juusto) = map.get_mut(char){let thing = *juusto as usize; for _i in 0..thing{run_operations(juustot, map);}},
}
}
}
fn find_match_index(txt: &Vec<char>, index:usize)->usize{
let mut count = 1;
let mut i = index + 1;
while count != 0{
if txt.len() > i{
if txt[i] == '('{
count += 1;
}else if txt[i] == ')'{
count -= 1;
}
i += 1;
}else{
//print!("error");
break;
}
}
return i-1;
}
fn string_to_operation(text: Vec<char>, start:usize, finish:usize) -> Vec<OPERATION>{
let mut rtrn: Vec<OPERATION> = Vec::new();
let mut j = start;
while j < finish{
if j + 6 < text.len(){
if text[j] == 'C' && text[j+1] == 'L'{
rtrn.push(OPERATION::CLEAR(text[j + 6]));
}
else if text[j] == 'P' && text[j+1] == 'R'{
rtrn.push(OPERATION::PRINT(text[j + 6]));
}
else if text[j] == 'I' && text[j+1] == 'N' && text[j+2] == 'C'{
rtrn.push(OPERATION::INCREASE(text[j + 9]));
}
else if text[j] == 'R' && text[j+1] == 'E' && text[j+2] == 'P'{
let end:usize =find_match_index(&text, j + 16);
rtrn.push(OPERATION::REPEAT(text[j + 7], string_to_operation(text.clone(), j + 16, end-1)));
j = end;
}
}
else{
//print!("problem");
}
j += 1;
}
return rtrn;
}
fn main(){
let mut variables: HashMap<char, i32> = HashMap::new();
let alphabets: Vec<char> = vec!['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'];
for letter in alphabets{
variables.insert(letter, 0);
}
let stdin = io::stdin();
let mut lines: Vec<String> = Vec::new();
for line in stdin.lock().lines() {
let l = line.unwrap();
lines.push(l);
}
lines.retain(|l| !l.is_empty());
lines.retain(|l| l.chars().next().unwrap() != '#');
let input = lines.join(" ");
//print!("{}", input);
let chars:Vec<char> = input.chars().collect();
//print!("{:?}", chars);
let index = 0;
let length = chars.len();
let _ops= string_to_operation(chars, index, length);
//println!("{:?}", _ops);
run_operations(&_ops,&mut variables);
}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: WRONG ANSWER
| input |
|---|
| INCREASE X # aybabtu PRINT X INCREASE # test ... |
| correct output |
|---|
| 1 3 |
| user output |
|---|
| 2 |
Feedback: Output is shorter than expected
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... |
