Задача B. Сумма двух чисел (Машина тьюринга)

Входной файл:input.txt   Ограничение времени:1 сек
Выходной файл:output.txt   Ограничение памяти:256 Мб

Условие

Даны два числа целых числа a и b в двоичной системе счисления. Вычислить их сумму.

Формат входного файла

a и b записаны на ленте в бинарной системе счисления и разделены нулевым символом. Указатель находится на разделяющем нулевом символе. В алфавите должны быть символы "1" и "0".

Формат языка программирования

Первая строка имеет формат ALPHABET <identifier-list>

где identifier-list это список идентификаторов, разделённых запятой, обозначающих элементы алфавита ленты. Идентификатор имеет формат [_a-z0-9]*

Алфавит также всегда содержит нулевой символ "Z", который задаётся неявно.

Каждая следующая строка описавает переход из одного состояния в другое в формате <state> <symbol> -> <state> <symbol> <direction>

здесь <state> — имя состояния (задаётся, как и идентификатор), <symbol> — символ, <direction> — направление смещения каретки (`<`, `.`, или `>`).

Программа начинает работу с состояния START.

Программа завершает работу, когда попадает в состояние END.

Весь код регистронезависим. Строки, начинающиеся с символа `#`, пропускаются.

Расширенный синтаксис перехода

Поддерживается такое описание правила перехода:

<state> <lsymbol-list> -> <state> <rsymbol-list> <direction> где <lsymbol-list> и <lsymbol-list> это списки символов через запятую. Например:

state1 a,b,c -> state2 c,d,e .

буквально означает

state1 a -> state2 c .

state1 b -> state2 d .

state1 c -> state2 e .

В <lsymbol-list> также можно указать "*" вместо символа, что будет соответствовать любому символу. Например, при алфавите A, B, C, Z правило

statex a, b, * -> statey c, d, e

буквально означает

statex a -> statey c .

statex b -> statey d .

statex C -> statey e .

statex Z -> statey e .

Формат выходного файла

Поместить указатель на начало числа, обозначающего ab. Число должно быть с обеих сторон отделено нулевым символом.

Ограничения

0lt;= blt;= alt; 109

Разрешается задать алфавит не более, чем из четырёх символов, не считая нулевого.

Примеры тестов

Входной файл (input.txt) Выходной файл (output.txt)
1

Z1001Z111Z
     ^
	

Z10000Z
 ^
	

0.035s 0.007s 15