Поскольку машина Тьюринга полностью определяется определением алфавита на ленте и конечного автомата, который читает ленту, было бы наиболее целесообразно сделать язык похожим на таблицу
Позволяет вызывать состоянияQn, символы Alfabet Ai читаются с ленты.Машина определяет следующее состояние из таблицы переходов и записывает Ao на ленту и перемещается в направлении D: L / R
Затем можно определить машину, записав ее
QnAi -> QmAoD
Программа добавления из Википедии станет
QbA0 -> QbA1R
QbA1 -> QbA1R
Q0A- -> Q0A-L
Q1A0 -> QrA-L
Q1A1 -> QaA-L
Q1A- -> QrA-L
в состоянии принятия и в состоянии отклонения.Это довольно компактное и удобочитаемое представление матрицы преобразования.
Это, конечно, предполагает, что то, что находится на ленте, интерпретируется как данные.Но ничто не мешает кому-либо создать матрицу переходов, чтобы сделать команду интерпретации состояния машины из ленты.
Для реализации этого у вас есть кортеж с левой стороны, а с правой стороны тройка, так что это сопоставляет поискв двумерном массиве, чтобы прочитать триплет.Сдвиньте состояние с помощью # бит персонажа на ленте и склейте их вместе.Умножьте (хорошо, еще одна операция сдвига), чтобы освободить место для триплета, и используйте это как смещение в таблице, чтобы прочитать триплет.
Запишите новое состояние в регистр состояний, символ на ленте и инкремент уменьшения, если вы найдете данные в триплете, или остановка данных там отсутствует.Должно быть весело в сборке.