Программа для теста второго задания из ДЗ по логике

Диск с задачами: https://drive.google.com/drive/folders/1UYhSEflnfZRIPUIztbv2lOXB8HWG6Z75

Ссылка на мой сайт с запуском тестов: https://zhukdmitryolegovich.github.io/logica-2/

Обозначения

" := пробел (:= ␣)
. := финальное состояние
[] := положение курсора // используется в комментариях

Форматирование правил (rule)

SC C -> NSC NC M

где

  • SC (status cursor) - {string} (без пробелов) - состояние машины ИЗ которого мы будем переходить (по умолчанию - 01);
  • C (character) - {0 | 1 | "} - на какой символ указывает курсор машина;
  • NSC (new status cursor) - {string} (без пробелов) - состояние курсора В которое мы будем переходить;
  • NC (new character) - {0 | 1 | " | -} - на какой символ ИЗМЕНИТСЯ символ на которых указывает курсор машина (- - alias на то чтобы не изменять символ <=> NC = C);
  • M (move) - {L | R | .} - куда сдвинется курсор автомата после изменения: L - влево на 1, R - вправо на 1, . - не сдвинется.

Форматирование тестов (test)

{input} -> {output}

строка на ввод и на вывод соответсвенно

За более подробными примерами - смортите примеры в ./rule/ и ./test/ или просто запустите их на моем сайте

Формат выходных данных

ok: [ IN, EOUT, ROUT, POS ]

где

  • IN (input) - {0 | 1}+ - входная строка для машины
  • EOUT (expected output) - {0 | 1}+ - ожидаемая выходная строка
  • ROUT (resulting output) - {0 | 1}+ - полученная выходная строка
  • POS (position) - {number} - финальная позиция курсора

при ошибках так же могут появляться поля:

  • status (state cursor) - {string} (без пробелов) - состояние на котором произошла ошибка;
  • rule - null - не нашлось правила перехода для данной комбинации состояния и символа под курсором.

Возможности

Можно писать комментарии в тестах и правилах после //

Можно ставить/убирать пробельные символы между, до и после элементов.

Можно указать стартовое и конечные состояния, а так же таймаут у тестов.