nice_test/
nice_test.rs

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
9// For more comfortable coding, use Result<(), String>:
10// `?` postfix symbol is better then `.unwrap()` postfix method call.
11fn 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        // Revers
20        (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}