Compare commits
No commits in common. "dc2e3bc106e0fc8232e5da5b0ac669afc57aa7af" and "e70580785fe54b518f7a10e23f0e15b4263a68a5" have entirely different histories.
dc2e3bc106
...
e70580785f
3 changed files with 2 additions and 23 deletions
|
@ -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
|
||||
|
|
|
@ -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"=/
|
19
src/main.rs
19
src/main.rs
|
@ -18,7 +18,6 @@ struct SandWormInterpreter {
|
|||
input_index: usize,
|
||||
output: Vec<u8>,
|
||||
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::<Vec<_>>()
|
||||
|
@ -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 {
|
||||
|
|
Loading…
Reference in a new issue