예제 #1
0
        public static void RunsAndHalts()
        {
            TuringMachine.Instruction instructionForSymbol0 = new TuringMachine.Instruction('1', TuringMachine.DirectionToMove.RIGHT,
                                                                                            TuringMachine.State.B);
            TuringMachine.Instruction instructionForSymbol1 = new TuringMachine.Instruction('0', TuringMachine.DirectionToMove.RIGHT,
                                                                                            TuringMachine.State.HALT);

            InstructionTable instructionTable =
                new Dictionary <TuringMachine.State, ValueTuple <TuringMachine.Instruction, TuringMachine.Instruction> >
            {
                { State.A, (instructionForSymbol0, instructionForSymbol1) },
예제 #2
0
        public static void ExecutesInstruction()
        {
            TuringMachine.Instruction instruction = new TuringMachine.Instruction('␇', TuringMachine.DirectionToMove.RIGHT,
                                                                                  TuringMachine.State.C);

            TuringMachine turingMachine    = new TuringMachine();
            uint          startingPosition = turingMachine.currentHeadPosition;

            turingMachine.execute(instruction);

            Assert.AreEqual('0', turingMachine.symbolUnderHead);
            Assert.AreEqual(startingPosition + 1, turingMachine.currentHeadPosition);
            Assert.AreEqual(TuringMachine.State.C, turingMachine.state);
        }