Главная > Ленточный клеточный автомат
1994
Имя входного файла: d.in
Имя выходного файла: d.out
Ограничение времени: 30 секунд

Ленточный клеточный автомат - это абстрактная вычислительная машина, на вход которой подается склеенная в кольцо лента с символами. Эта лента является также единственным запоминающим устройством автомата. Автомат работает пошагово согласно таблице переходов. Таблица переходов определяет мгновенное изменение содержимого ленты за один шаг автомата. Элемент таблицы переходов задает новое значение ячейки в зависимости от ее содержимого и содержимого двух соседних ячеек.

Задано начальное состояние ленты, количество шагов автомата и таблица переходов. Требуется промоделировать работу заданного автомата и определить содержимое ленты через заданное число шагов.

Файл исходных данных содержит один или несколько наборов исходных данных, разделенных пустой строкой.

В первой строке набора исходных данных содержится начальное состояние ленты (исходные данные автомата). Допустимыми символами на ленте являются большие и малые латинские буквы, цифры и символ подчеркивания. Длина ленты не превосходит 20-ти символов и не меньше 3-х символов.

Во второй строке набора исходных данных содержится число шагов автомата N. N - целое число от 0 до 100.

В следующих строках набора исходных данных содержится описание таблицы переходов. Описание состоит из правил, которые записываются на отдельных строках в виде:

iAj -> B

Такое правило определяет, что если ячейка содержит символ A, соседняя ячейка слева содержит символ i, соседняя ячейка справа содержит символ j, то на следующем шаге значением ячейки будет символ B.

У первой ячейки соседом слева является последняя ячейка, а у последней ячейки соседом справа является первая. Если для ячейки и ее соседей нет подходящего правила, то ее содержимое на данном шаге не изменяется.

Для каждого набора исходных данных вывести в выходной файл с новой строки содержимое ленты автомата через заданное число шагов.

Все исходные данные корректны и их проверка не требуется. Длина файла исходных данных не превосходит 64-х Кбайт.


Пример

d.ind.out
100010011
2
101 -> 1
001 -> 1
010 -> 0
110 ->> 0

ABC
6
ADC -> Q
001001110
ABC

 
Hosted by uCoz