1extern crate turing_machine_rs;
2
3use turing_machine_rs::instruction::{Move, State};
4use turing_machine_rs::machines::Classic;
5use turing_machine_rs::program::{Extend, Program};
6use turing_machine_rs::state::Tape;
7use turing_machine_rs::TuringMachine;
8
9fn main() -> Result<(), String> {
12 let alphabet = vec!['t', 'e', 's', 'n', 'i', 'c', 'e', '_'];
13 let mut program = Program::new(alphabet, State(4));
14 program.extend([
15 (1, 't', 2, 'n', Move::Right),
16 (2, 'e', 3, 'i', Move::Right),
17 (3, 's', 4, 'c', Move::Right),
18 (4, 't', 0, 'e', Move::None),
19 (1, 'n', 2, 't', Move::Right),
21 (2, 'i', 3, 'e', Move::Right),
22 (3, 'c', 4, 's', Move::Right),
23 (4, 'e', 0, 't', Move::None),
24 ])?;
25 let machine = Classic::new(program, '_')?;
26
27 let test = Tape::from("test");
28 let nice = machine.translate_nrm(test.clone())?;
29 println!(
30 "{} {}!",
31 String::from_iter(nice.as_vec()),
32 String::from_iter(test.as_vec())
33 );
34 Ok(())
35}