From 4c1799c19d54a2147ac7cc69f45b766273ff83f7 Mon Sep 17 00:00:00 2001 From: Nilstrieb Date: Thu, 22 Apr 2021 19:33:47 +0200 Subject: [PATCH] removed o0 --- bfi-rust/src/main.rs | 72 +------------------------------------------- 1 file changed, 1 insertion(+), 71 deletions(-) diff --git a/bfi-rust/src/main.rs b/bfi-rust/src/main.rs index 2ea7772..18b8fa6 100644 --- a/bfi-rust/src/main.rs +++ b/bfi-rust/src/main.rs @@ -23,81 +23,11 @@ fn run(path: String) { let start = SystemTime::now(); - //new - //let out = o1::run(&*program); - - //old - let out = interpret(program.chars().collect()); + let out = o1::run(&*program); println!("{}\nFinished execution in {}ms", out, start.elapsed().unwrap().as_millis()); } -fn minify(program: String) -> String { - let allowed = vec!['>', '<', '+', '-', '.', ',', '[', ']']; - program.chars().filter(|c| allowed.contains(c)).collect() -} - -const MEM_SIZE: usize = 0xFFFF; - -fn interpret(pgm: Vec) -> String { - let mut out = String::new(); - let mut pointer: usize = 0; - let mut mem: [u8; MEM_SIZE] = [0; MEM_SIZE]; - let mut in_buffer = [0; 1]; - let mut pc = 0; - let len = pgm.len(); - - while pc < len { - match pgm[pc] { - '>' => if pointer == MEM_SIZE - 1 { pointer = 0 } else { pointer += 1 }, - '<' => if pointer == 0 { pointer = MEM_SIZE - 1 } else { pointer -= 1 }, - '+' => mem[pointer] = mem[pointer].wrapping_add(1), - '-' => mem[pointer] = mem[pointer].wrapping_sub(1), - '.' => out.push(mem[pointer] as u8 as char), - ',' => { - stdin().read(&mut in_buffer).unwrap(); - mem[pointer] = in_buffer[0] as u8; - } - '[' => { - //jump to corresponding ] - if mem[pointer] == 0 { - let mut level = 0; - while pgm[pc] != ']' || level > -1 { - pc += 1; - match pgm[pc] { - '[' => { - level += 1 - } - ']' => { - level -= 1 - } - _ => (), - } - } - } - } - ']' => { - if mem[pointer] != 0 { - //jump to corresponding [ - let mut level = 0; - while pgm[pc] != '[' || level > -1 { - pc -= 1; - match pgm[pc] { - '[' => level -= 1, - ']' => level += 1, - _ => (), - } - } - } - } - _ => (), - } - pc += 1; - } - - out -} - /// /// # optimization time ///