Задача №2. Заботливый распределитель
Условие Задачи №2.
В умном улье работает заботливый диспетчер, который направляет робопчёл собирать пыльцу с трёх разных цветочных полей. Подлетающая пчела отправляет диспетчеру сигнал «Ж-ж-ж», после чего тот определяет, на какое поле её отправить.
Порядок цветов всегда один и тот же: Розы → Одуванчики → Васильки→ снова Розы → …
Но собирать пыльцу — тяжёлая работа, и если несколько пчёл уже улетело на один и тот же цветок, распределитель дает очередной пчеле перерыв и не отправляет пчелу в поле.
На какой цветок полетит очередная робопчела после того, как поступило 10 сигналов «Ж-ж-ж»?
Обратите внимание, в квадратных скобках пишется условие, при котором сигнал будет обрабатываться. entry – это действия, которые выполняются при переходе в состояние, exit – при выходе из него.
Решение Задачи №2.
Для получения ответа необходимо пройти по машине состояний, выполнив команды в ней и посчитав счётчики полётов.
| Сигнал | Состояние | Розы | Одуванчики | Васильки |
|---|---|---|---|---|
| 0 | Инициализация | 0 | 0 | 0 |
| 1 | Розы | 0 | 0 | 0 |
| 2 | Одуванчики | 1 | 0 | 0 |
| 3 | Васильки | 1 | 1 | 0 |
| 4 | Розы | 1 | 1 | 1 |
| 5 | Одуванчики | 2 | 1 | 1 |
| 6 | Васильки | 2 | 2 | 1 |
| 7 | Розы | 2 | 2 | 2 |
| 8 | Розы | 0 | 2 | 2 |
| 9 | Одуванчики | 1 | 2 | 2 |
| 10 | Васильки | 1 | 3 | 2 |
Когда прилетит очередная пчела, выполнится переход в состояние «Полёт на розы», при выходе из которого пчела отправится на васильки.
Ответ к Задаче №2: Василек
Видеоразбор задачи: