Хорошо, ребята, сегодня цель состоит в том, чтобы построить тренажер машины Тьюринга. Для тех, кто не знает, что это такое, см. статью в Википедии. Таблица состояний, которую мы используем сегодня, находится в конце формальное определение, которое является частью этой страницы.
Код будет содержать последовательность символов "0" и "1", целое число, представляющее символ, с которого начинается машина, и целое число, представляющее состояние программы (в определенном порядке), и выводят конечный результат операций над строкой, а также конечную позицию. Примеры:
Пример 1:
1010 state A(0)
^ (3)
1011 state B(1)
^ (2)
1011 state B(1)
^ (1)
1111 state A(0)
^ (2)
1111 state C(0)
^ (3)
1111 HALT
^ (2)
Пример 2:
110100 state B(1)
^ (3)
110100 state B(1)
^ (2)
111100 state A(0)
^ (3)
111100 state C(2)
^ (4)
111110 state B(1)
^ (5)
1111110 state A(0)
^ (6, tape has been extended to right)
1111111 state B(1)
^ (5)
1111111 state B(1)
^ (4)
1111111 state B(1)
^ (3)
1111111 state B(1)
^ (2)
1111111 state B(1)
^ (1)
1111111 state B(1)
^ (0)
01111111 state B(1)
^ (0, tape has been extended to left)
11111111 state A(0)
^ (1)
11111111 state C(2)
^ (2)
11111111 HALT
^ (1)
Разное:
- Ваш код должен правильно обрабатывать попытки записи в "пробелы" на ленте, путем расширения строки по мере необходимости.
- Поскольку указанный конечный автомат не указывает какого-либо действия "пустой ленты", обрабатывайте все пустые значения как 0.
- Вы должны учитывать только метод, который обрабатывает оценку строки с начальным состоянием, как вы выводите эти данные для вас.
- Движение вправо на ленте увеличивается (позиция строки 0 находится полностью слева), состояние 0 равно A, состояние 1 - B, а состояние 2 - C.
(надеюсь) окончательное редактирование: Я приношу свои самые искренние извинения в связи с путаницей и проблемами, которые я вызвал с этим вопросом: я неправильно прочитал представленную таблицу состояний, которую я перечислил, и получил ее назад. Надеюсь, вы простите меня за то, что потратили свое время; это было совершенно непреднамеренно!