deterministic-finite-automaton

Rust implementation of a deterministic finite automaton

Wikipedia Link

usage:

``` // Accepts strings that contain 1 twice let states = [0, 1, 2]; let alphabet = [0, 1]; let transitionfn = |s, c| match (s, c) { (0, 0) => 0, (0, 1) => 1, (1, 0) => 1, (1, 1) => 2, (2, 0) => 2, (2, 1) => 2, _ => panic!("Invalid (state, char)"), }; let startstate = 0 let accept_states = [2];

let dfa = DFA::new( states, alphabet, transitionfn, startstate, accept_states, );

assert!(dfa.input([1, 1, 0]) State::Accept(2)); assert!(dfa.input([0]) State::Reject(0)); ```