extern crate turing_machine_rs;
use turing_machine_rs::instruction::{Move, State};
use turing_machine_rs::machines::Classic;
use turing_machine_rs::program::{Extend, Program};
use turing_machine_rs::state::Tape;
use turing_machine_rs::TuringMachine;
fn main() -> Result<(), String> {
let alphabet = vec!['t', 'e', 's', 'n', 'i', 'c', 'e', '_'];
let mut program = Program::new(alphabet, State(4));
program.extend([
(1, 't', 2, 'n', Move::Right),
(2, 'e', 3, 'i', Move::Right),
(3, 's', 4, 'c', Move::Right),
(4, 't', 0, 'e', Move::None),
(1, 'n', 2, 't', Move::Right),
(2, 'i', 3, 'e', Move::Right),
(3, 'c', 4, 's', Move::Right),
(4, 'e', 0, 't', Move::None),
])?;
let machine = Classic::new(program, '_')?;
let test = Tape::from("test");
let nice = machine.translate_nrm(test.clone())?;
println!(
"{} {}!",
String::from_iter(nice.as_vec()),
String::from_iter(test.as_vec())
);
Ok(())
}