Задача №7. Строчник на посту
Условие Задачи №7.
Медвежата-киберфизики работают над проектом по распознаванию сигналов с древней Земли. Для этого они собрали специального помощника — строчника, который умеет читать строки по буквам и подавать сигналы, если находит что-то важное.
Как работает строчник: каждую секунду он получает одну букву и двигается дальше. Его задача — внимательно следить за последовательностью символов и подавать сигналы в нужный момент.
Вот какие сигналы он должен подавать:
- Сигнал А — если подряд встретились буквы О-С-А.
- Сигнал Б — если встретилась буква Ь, а через одну букву после неё появилась Ъ. При этом в середине не может быть ещё одного Ь. (то есть последовательность вида: Ь _ Ъ, где _ — любая буква, кроме Ь).
- Сигнал В — если до конца всей строки ни разу не встретилась буква И.
Подробнее про строчника можно узнать в образовательном курсе: https://orbita.education/ru/RU/events/101/488/7429
Постройте схему ПРИМС, по которой строчник сможет правильно обрабатывать входную строку и подавать сигналы А, Б и В в нужные моменты.
Для построения диаграммы ПРИМС нужна Кибериада IDE, её можно скачать по этой ссылке. При создании схемы выберите исполнителя «(Junior) Строчник». В ответе вставьте содержимое файла диаграммы в переменную state_machine.
Решение Задачи №7.
Мы принимаем буквы по очереди. С помощью иерархии мы постоянно проверяем, появляется ли буква И, и если является, то выставляем флаг в счетчике, который мы проверяем при окончании получаемой строки. Также с помощью иерархии мы всегда проверяем букву Ь. Если встречается буква О, то мы ждем последовательность О-С-А. Если встретилась буква Ь, то мы ее обрабатываем в отдельном состоянии, в котором одновременно ожидаем либо последовательность О-С, либо Ъ.
Файл диаграммы проверяется путём его интерпретации в среде симулятора с исполнителем. Производится несколько запусков симуляции, в каждом из которых исполнителю передаются разные входные данные. Результат работы исполнителя на загруженной диаграмме ПРИМС сравнивается с эталонными выходными данными. Решение оценивается на полный балл, если оно проходит все тесты.
Изображение диаграммы, принимаемой в качестве правильного ответа:
Видеоразбор задачи: