static void Main(string[] args) { //DFARulebook rulebook = new DFARulebook(); //rulebook.AddRule(2, 'b', 3); //rulebook.AddRule(2, 'a', 3); //rulebook.AddRule(1, 'b', 1); //rulebook.AddRule(1, 'a', 1); //rulebook.AddRule(1, 'b', 2); //rulebook.AddRule(3, 'a', 4); //rulebook.AddRule(3, 'b', 4); List <int> startState = new List <int>(); startState.Add(1); //List<int> state = new List<int>(); //state.Add(4); //NFA dfa = new NFA(startState, state, rulebook); //dfa.ReadString("bbabb"); //if (dfa.Accepting()) //{ // Console.WriteLine("True"); // Console.ReadLine(); //} //else //{ // Console.WriteLine("False"); // Console.ReadLine(); //} string alphabet = "абвгдеёжзийклмнопрстуфхцчшщъэьэюя"; DFARulebook alfbook = new DFARulebook(); alfbook.AddRule(1, 'a', 2); alfbook.AddRule(1, 'о', 2); alfbook.AddRule(1, 'и', 2); alfbook.AddRule(1, 'е', 3); foreach (char c in alphabet) { alfbook.AddRule(1, c, 1); } List <int> stateEnd = new List <int>(); stateEnd.Add(3); NFA alfNfa = new NFA(startState, stateEnd, alfbook); List <string> words = new List <string>(); words.Add("большое"); words.Add("тигр"); words.Add("большие"); words.Add("серый"); words.Add("урожае"); alfNfa.CheckAndPrintWords(words); }
public void CheckAndPrintWords(List <string> words) { List <int> start = new List <int>(); start.Add(1); foreach (string word in words) { NFA newNFA = new NFA(start, AcceptStates, Rulebook); newNFA.ReadString(word); if (newNFA.Accepting()) { Console.WriteLine(word); } } }
static void BinaryMachine() { var binaryMachine = new NFA() { q0 = State.q0, F = new Tập_Hợp <State>() { State.q2, State.q4 }, }; binaryMachine.delta = (q, c) => { var Q = new Tập_Hợp <State>(); switch (q) { case State.q0: if (c == '0') { return new Tập_Hợp <State> { State.q0, State.q3 } } ; else { return new Tập_Hợp <State>() { State.q0, State.q1 } }; case State.q1: if (c == '0') { return new Tập_Hợp <State> { } } ; else { return new Tập_Hợp <State> { State.q2 } }; case State.q2: if (c == '0') { return new Tập_Hợp <State> { State.q2 } } ; else { return new Tập_Hợp <State> { State.q2 } }; case State.q3: if (c == '0') { return new Tập_Hợp <State> { State.q4 } } ; else { return new Tập_Hợp <State> { } }; case State.q4: if (c == '0') { return new Tập_Hợp <State> { State.q4 } } ; else { return new Tập_Hợp <State> { State.q4 } }; default: break; } return(Q); }; var s1 = "01"; var s2 = "01001"; Console.WriteLine("Accept : " + s1 + " --> " + binaryMachine.Accept(s1)); Console.WriteLine("--------------"); Console.WriteLine("Accept : " + s2 + " --> " + binaryMachine.Accept(s2)); Console.ReadKey(); }