public void Test8() { for (int i = 0; i < 128; i++) { var asBinaryString = Convert.ToString(i, 2); var input = $@" @Programa Fonte Unifor fita {asBinaryString} init q accept qf q,0,q,0,> q,1,q,1,> q,_,qf,0,<"; var turingMachine = TuringMachine.FromText(input.Split('\n')); while (turingMachine.MachineState != TuringMachine.State.Finished) { turingMachine.Run(); } Console.WriteLine($"On {i} -- {asBinaryString}"); Assert.AreEqual(i * 2, Convert.ToInt32(turingMachine.Data.ReadAll(), 2)); } }
public void Test4() { var input = @" @Programa Fonte Unifor fita 1011 init qi accept qf qi,1,qi,1,> qi,0,qi,0,> qi,_,q1,_,< q1,1,q1,0,< q1,0,qf,1,<"; var turingMachine = TuringMachine.FromText(input.Split('\n')); while (turingMachine.MachineState != TuringMachine.State.Finished) { turingMachine.Run(); } Assert.AreEqual(TuringMachine.FinishResult.Valid, turingMachine.Result); Assert.AreEqual("1100", turingMachine.Data.ReadAll()); }
public void Test6() { for (int i = 0; i < 128; i++) { var asBinaryString = Convert.ToString(i, 2); var input = $@" @Programa Fonte Unifor fita {asBinaryString} init qs accept qv qs,0,qs,0,> qs,1,qs,1,> qs,_,qcf,_,< qcf,1,qcs,1,< qcs,0,qv,0,<"; var turingMachine = TuringMachine.FromText(input.Split('\n')); while (turingMachine.MachineState != TuringMachine.State.Finished) { turingMachine.Run(); } Console.WriteLine($"On {i} -- {asBinaryString}"); Assert.AreEqual(asBinaryString.EndsWith("01"), turingMachine.Result == TuringMachine.FinishResult.Valid); } }
public void Test5() { for (int i = 0; i < 128; i++) { var asBinaryString = Convert.ToString(i, 2); var input = $@" @Programa Fonte Unifor fita {asBinaryString} init q0 accept q0 q0,0,q0,0,> q0,1,q1,1,> q1,0,q2,0,> q1,1,q3,1,> q2,0,q4,0,> q2,1,q0,1,> q3,0,q1,0,> q3,1,q2,1,> q4,0,q3,0,> q4,1,q4,1,>"; var turingMachine = TuringMachine.FromText(input.Split('\n')); while (turingMachine.MachineState != TuringMachine.State.Finished) { turingMachine.Run(); } Console.WriteLine($"On {i} -- {asBinaryString}"); Assert.AreEqual(i % 5 == 0, turingMachine.Result == TuringMachine.FinishResult.Valid); } }
private void ResetButton_Click(object sender, RoutedEventArgs e) { TuringMachine = TuringMachine.FromText(input); UpdateData(); PlayButton.IsEnabled = true; ForwardButton.IsEnabled = true; }
private void OpenFileButton_Click(object sender, RoutedEventArgs e) { var ofd = new OpenFileDialog(); if (ofd.ShowDialog() == true) { input = File.ReadAllLines(ofd.FileName); TuringMachine = TuringMachine.FromText(input); UpdateData(); } }
protected override void OnStartup(StartupEventArgs e) { base.OnStartup(e); var input = @" @Programa Fonte Unifor fita 1011 init qi accept qf qi,1,qi,1,> qi,0,qi,0,> qi,_,q1,Y,< q1,1,q1,1,< q1,0,q1,0,< q1,_,qf,X,>"; var turingMachine = TuringMachine.FromText(input.Split('\n')); while (turingMachine.MachineState != TuringMachine.State.Finished) { turingMachine.Run(); } }
public void Test7() { for (int i = 0; i < 128; i++) { var asBinaryString = Convert.ToString(i, 2); var input = $@" @Programa Fonte Unifor @x = 0 but was alredy copied @a = 0 but was first copied @y = 1 but was already copied @b = 1 but was first copy fita {asBinaryString} init qcf accept qf qcf,0,qaf0,x,> qcf,1,qaf1,y,> qaf0,0,qaf0,0,> qaf0,1,qaf0,1,> qaf0,_,qr,a,< qaf1,0,qaf1,0,> qaf1,1,qaf1,1,> qaf1,_,qr,b,< qr,0,qr,0,< qr,1,qr,1,< qr,a,qr,a,< qr,b,qr,b,< qr,x,qc,x,> qr,y,qc,y,> qc,0,qa0,x,> qc,1,qa1,y,> qc,a,qt,0,< qc,b,qt,1,< qa0,0,qa0,0,> qa0,1,qa0,1,> qa0,a,qa0,a,> qa0,b,qa0,b,> qa0,_,qr,0,< qa1,0,qa1,0,> qa1,1,qa1,1,> qa1,a,qa1,a,> qa1,b,qa1,b,> qa1,_,qr,1,< qt,x,qt,0,< qt,y,qt,1,< qt,_,qf,_,>"; var turingMachine = TuringMachine.FromText(input.Split('\n')); while (turingMachine.MachineState != TuringMachine.State.Finished) { turingMachine.Run(); } Console.WriteLine($"On {i} -- {asBinaryString}"); try { Assert.AreEqual(asBinaryString + asBinaryString, turingMachine.Data.ReadAll()); Assert.AreEqual(TuringMachine.FinishResult.Valid, turingMachine.Result); } catch (AssertionException) { Console.WriteLine("Failed. Log:"); Console.WriteLine(turingMachine.Log); throw; } } }
private void ResetButton_Click(object sender, RoutedEventArgs e) { TuringMachine = TuringMachine.FromText(input); UpdateData(); }