diff --git a/README.md b/README.md index 4bfada8..286bb54 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,6 @@ ## commands ``` +- pop 2 values, push sum/difference (uses the order they are popped, so `0-` negates the top of the stack) -~ logical not (0 becomes 1, nonzero becomes 0) ><^v change direction 0..9 push number to stack /\ pop stack, reflect to the side if not zero diff --git a/programs/99_bottles_of_beer.worm b/programs/99_bottles_of_beer.worm deleted file mode 100644 index 1f4c88f..0000000 --- a/programs/99_bottles_of_beer.worm +++ /dev/null @@ -1,5 +0,0 @@ -v00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000@< ->6=+=+=+=+3+v>!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!^ -v <^!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!_of_beer_on_the_wall=+55-:9_bottle_of_beer_on_the_wall+55-:9_bottle_of_beer+55Take_one_down,_pass_it_around+55No_bottles_of_beer_on_the_wall< -> 1v -\11!!!!!!!!!!!!!!!!!!!!!!!s_of_beer_on_the_wall=+55/~+-01=!!!!!!!_bottle"=+-01!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!_bottles_of_beer+55Take_one_down,_pass_it_around+55"=!!!!!!!!!!!!!!!!!!!!!!!!!!!!!_bottles_of_beer_on_the_wall+55"=/ diff --git a/src/main.rs b/src/main.rs index b14e917..259d4fc 100644 --- a/src/main.rs +++ b/src/main.rs @@ -18,7 +18,6 @@ struct SandWormInterpreter { input_index: usize, output: Vec, state: State, - steps: usize, } #[derive(Debug, Default)] @@ -77,7 +76,7 @@ fn main() { match action.as_slice() { [] | ["step"] => interpreter.step_once(), ["step", num] => _ = num.parse().map(|n| interpreter.step(n)), - ["run"] => interpreter.run(), + // ["run"] => interpreter.run(), ["q" | "exit" | "quit"] => break, _ => println!("{}", "unrecognised command".red()), @@ -102,13 +101,6 @@ impl SandWormInterpreter { state: State::default(), direction: Direction::default(), input_index: 0, - steps: 0, - } - } - - fn run(&mut self) { - while self.state == State::Running { - self.step_once(); } } @@ -122,8 +114,7 @@ impl SandWormInterpreter { } fn show(&self) { - // dbg!(&self); - print!("\x1B[2J"); // clear screen + dbg!(&self); println!( "{:?}", self.worm.iter().map(|p| self.get(*p)).collect::>() @@ -154,7 +145,6 @@ impl SandWormInterpreter { } println!("output: {}", String::from_utf8_lossy(&self.output)); println!("input: {}", String::from_utf8_lossy(&self.input)); - println!("steps: {}", self.steps); } fn step_once(&mut self) { @@ -166,7 +156,6 @@ impl SandWormInterpreter { self.state = State::EndOfProgram; return; } - self.steps += 1; let instruction = self.get(front); let mut dont_push_instruction = false; @@ -213,10 +202,6 @@ impl SandWormInterpreter { let last_val = self.worm.last().map(|&p| self.get(p)).unwrap_or_default(); self.worm_in.push(last_val); } - b'~' => { - let last_val = self.shrink(); - self.worm_in.push((last_val == 0) as u8); - } b'\\' => { let val = self.shrink(); if val != 0 {