Задание C. "Ханойская башня"

В теории программирования хорошо известна так называемая машина Тьюринга, предложенная для исследования понятия вычислимости. Кратко опишем эту абстрактную конструкцию.
Машина Тьюринга - это автомат, который обрабатывает потенциально бесконечную ленту, разбитую на ячейки-клетки, одна из которых является обозреваемой (текущей). Блок управления машины Тьюринга в каждый момент времени хранит некоторое текущее состояние. За один шаг блок управления по паре: текущий символ на ленте, текущее состояние - может сменить текущий символ и текущее состояние и переместиться по ленте налево (символ '<') или направо (символ '>') на одну клетку или остаться на месте (символ '=').
Программа для машины Тьюринга - это таблица из пяти столбцов (см. пример ниже).
Будем считать, что первоначально машина Тьюринга находится в состоянии 1. На ленте размещены исходные данные, ограниченные слева и справа символами '#". Блок управления в начальный момент обозревает первый слева символ входных данных. В одну ячейку ленты разрешено записывать один символ из алфавита {'A'..'Z', '#'}. В таблице не должно быть двух и более строк, задающих одинаковые пары: текущий символ, текущее состояние. Состояние машины Тьюринга задается целым числом без знака.
Машина Тьюринга прекращает работу, если не предусмотрено действие в программе-таблице для текущей пары: символ, состояние.
Задание. Составьте для машины Тьюринга программу, при выполнении которой с исходного стрежня A на любой другой (B или C) перекладываются все диски игры-головоломки "Ханойская башня".
Решение представляется в файле <регистрационный номер>c.txt.
Описание игры-головоломки "Ханойская башня". Суть игры состоит в следующем. Имеются три стержня: A, B, C. На стержне A размещено в возрастающем порядке диаметров некоторое количество дисков. За один ход разрешается переложить верхний диск с одного стрежня на один из двух других стержней при соблюдении условия: недопустимо класть диск большего диаметра на диск меньшего диаметра.
Цель игры: переместить все диски со стержня A на любой другой стержень.
Входные данные. Каждому диску соответствует своя ячейка ленты. Первоначально все диски находятся на стержне A, поэтому все ячейки ленты содержат символ A. Слева и справа от этих ячеек размещены символы '#'. Блок управления первоначально указывает на самую левую ячейку с символом 'A', соответствующую диску минимального диаметра.
В процессе игры ячейки ленты машины Тьюринга, соответствующие дискам, должны изменяться строго по правилам игры. Работа машины Тьюринга прекращается, если какой либо диск (то есть, соответствующая ему ячейка) перемещается либо с нарушением правил игры, либо переносится на несуществующий стержень. Остальные ячейки ленты могут принимать любые значения из определенного алфавита.
Пример. Ниже приведен пример таблицы-программы, руководствуясь которой машина Тьюринга выполнит перекладывание трех дисков. Входные данные: '…#AAA#…'.
Пример перекладывания трех дисков. Ниже приводится пример решения задачи для частного случая, когда на стержне А размещено три диска. В таблице приведена лента после выполнения предыдущего шага. Обозреваемый символ заключен в прямоугольник.
Лучшим будет признано решение, которое решает головоломку "Ханойская башня" за наименьшее число шагов машины Тьюринга по совокупности всех тестов.
Число дисков головоломки будет изменяться от 1 до 15.
Ограничения. Количество строк таблицы не должно превышать 2000. Количество используемых состояний не должно превышать 100. Количество используемых ячеек ленты не должно превышать 1000. Количество шагов машины Тьюринга не должно превышать разумного предела.
Для отладки программы жюри предоставляет желающим участникам бета-версию тестовой программы turing.pas (имя файла с таблицей управления передается параметром в командной строке).
Формат файла с таблицей управления
В файле перечисляются строки таблицы управления. Все элементы отделяются друг от друга пробелом. Текст от знака '%' до конца строки считается комментарием и не учитывается. Комментарий либо занимают всю строку (тогда знак процента записывается первым в строке), либо следует за строкой управления.
В первой строке файла обязательно указывается регистрационный номер и ФИО участника. Далее следуют строки таблицы управления и возможные комментарии.
Пример файла с решением головоломки для одного диска
      % P000 Пинаев Владимир
      A 1 B 2 > % переместили первый диск на стержень B
      A 2 C 3 <
      B 3 C 4 >
      C 4 C 5 >
      A 5 B 6 <
      C 6 C 7 <
      C 7 A 8 >
      C 8 B 9 <
      A 9 B 0 =