Exemple #1
0
        public void TestCalculateDiagnosticChecksum()
        {
            TuringState a = new TuringState(false, true, -1, 1, "B", "B");
            TuringState b = new TuringState(true, true, 1, -1, "A", "A");
            Dictionary <string, TuringState> states = new Dictionary <string, TuringState>();

            states.Add("A", a);
            states.Add("B", b);

            var sut    = new DayTwentyFive();
            var result = sut.CalculateDiagnosticChecksum(states, 6, "A");

            Assert.Equal(3, result);
        }
        public int StateA()
        {
            int value = GetValue(Cursor);

            if (value == 0)
            {
                Tape[Cursor] = 1;
                Cursor++;
                State = TuringState.B;
            }
            else
            {
                Tape[Cursor] = 0;
                Cursor--;
                State = TuringState.B;
            }
            return(value);
        }
 /// <summary>
 /// Инициализирует операцию указанными параметрами.
 /// </summary>
 /// <param name="id">Уникальный идентификатор операции машины Тьюринга.</param>
 /// <param name="args">Аргументы операции.</param>
 public TuringOperation(TuringOperationId id, TuringState args)
     : base((byte)id, new object[1])
 {
     Args[0] = args as object;
 }
 /// <summary>
 /// Проверяет состояния на корректность. Если состояния не прошли проверку, генерируется исключение.
 /// </summary>
 /// <param name="states">Список проверяемых состояний.</param>
 private void StatesOK(TuringState[] states)
 {
     if (states[0].Converts[0].Input.Length != _tapes.Count)
         throw new Exception("Описанные переходы для состояний должны соответствовать текущему количеству лент машины Тьюринга");
 }