Условие Задачи №7.

Во время практики на орбитальной станции медвежата-киберфизики подключили строчника к потоку древнеземных текстов. Его задача — выдавать сигналы, если он замечает в тексте важные комбинации букв. Чтобы строчник не запутался, медвежата решили составить ему программу на понятном для строчника языке ПРИМС.

Как работает строчник: каждую секунду он получает одну букву и двигается дальше. Его задача — внимательно следить за последовательностью символов и подавать сигналы в нужный момент. Вот какие сигналы он должен подавать:

  • Сигнал А — если встретилась буква А, а через одну букву (любую) после неё — буква Б. При этом в середине не может быть ещё одной А. (то есть в тексте появилась последовательность: А _ Б, где _ – любая буква, кроме А)
  • Сигнал Б — если подряд встретились буквы М Е Д — в таком порядке, без пропусков.
  • Сигнал В — в самом конце строки, если буква Ъ встретилась ровно два раза за всё время.

Подробнее про строчника можно узнать в образовательном курсе: https://orbita.education/ru/RU/events/101/488/7429

Постройте схему ПРИМС, по которой строчник сможет правильно обрабатывать входную строку и подавать сигналы А, Б и В в нужные моменты.

Для построения диаграммы ПРИМС нужна Кибериада IDE, её можно скачать по этой ссылке. При создании схемы выберите исполнителя «(Junior) Строчник». В ответе вставьте содержимое файла диаграммы в переменную state_machine.

Решение Задачи №7.

Мы принимаем буквы по очереди. С помощью иерархии мы постоянно проверяем, появляется ли буква Ъ, и если появляется, то добавляем единицу в счетчике, который мы проверяем при окончании получаемой строки. Также с помощью иерархии мы всегда проверяем букву А. Если встречается буква М, то мы ждем последовательность М-Е-Д. Если встретилась буква А, то мы ее обрабатываем в отдельном состоянии, в котором одновременно ожидаем либо последовательность М-Е, либо Б.

Файл диаграммы проверяется путём его интерпретации в среде симулятора с исполнителем. Производится несколько запусков симуляции, в каждом из которых исполнителю передаются разные входные данные. Результат работы исполнителя на загруженной диаграмме ПРИМС сравнивается с эталонными выходными данными. Решение оценивается на полный балл, если оно проходит все тесты.

Изображение диаграммы, принимаемой в качестве правильного ответа:

Видеоразбор задачи:

Последнее изменение: понедельник, 15 декабря 2025, 14:05