Нормальный алгорифм Маркова

Материал из Информатика и Техники

Условие задачи

Написать фунцию, реализующую нормальный алгорифм Маркова и проверить ее работоспособность.

Функция должна принимать три параметра:

  1. исходная текстовая строка
  2. выполняемый алгорифм
  3. максимально допустимое число шагов (по умолчанию 1000, Nonе означает неограниченное число шагов)

Нормальный алгоритм должен записываться в виде списка кортежей, каждый из которых содержит три элемента:

  • исходная строка правила;
  • замещающая строка правила;
  • True, если правило завершающее, False, если правило обыкновенное.

Например, алгорифм

a01 -> 1a0
a00 -> 0a0
a->.
->a

Должен быть записан следующим образом

[
    ( 'a01', '1a0', False, ),
    ( 'a00', '0a0', False, ),
    ( 'a', '', True, ),
    ( '', 'a', False, ),
]

Функция должна возвращать полученную в результате работы алгорифма строку. Если количество выполненных алгорифмом шагов превысило максимально допустимое, функция должна выбросить исключение MaximumStepsExceeded

Указания к решению задачи

Тип исключения MaximumStepsExceeded в языке Python отсутствует -- его необходимо создать самостоятельно.