Ejemplo n.º 1
0
        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));
            }
        }
Ejemplo n.º 2
0
        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());
        }
Ejemplo n.º 3
0
        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);
            }
        }
Ejemplo n.º 4
0
        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);
            }
        }
Ejemplo n.º 5
0
        private void ResetButton_Click(object sender, RoutedEventArgs e)
        {
            TuringMachine = TuringMachine.FromText(input);
            UpdateData();

            PlayButton.IsEnabled    = true;
            ForwardButton.IsEnabled = true;
        }
Ejemplo n.º 6
0
        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();
            }
        }
Ejemplo n.º 7
0
        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();
            }
        }
Ejemplo n.º 8
0
        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;
                }
            }
        }
Ejemplo n.º 9
0
 private void ResetButton_Click(object sender, RoutedEventArgs e)
 {
     TuringMachine = TuringMachine.FromText(input);
     UpdateData();
 }