Условие в условии
Теперь дорожка поворачивает и налево, и направо. Когда собака не может идти вперёд, ей нужно решить ещё и в какую сторону повернуть. Помогают два новых чувства: есть путь налево и есть путь направо. Налево и направо — с точки зрения собаки, как и при повороте.
Собака решает в два шага:
- Есть ли путь вперёд? Если есть, она идёт вперёд.
- Если нет: есть ли путь налево? Если есть, она поворачивает налево, а иначе — направо.
Второе решение принимается, только если на первый вопрос ответ «нет». Поэтому оно находится в части иначе первого блока. Условие внутри другого условия называется вложенным условием:
Еслиесть путь вперёдИди вперёд
иначеЕслиесть путь налевоПоверни налево ↺
иначеПоверни направо ↻
Почему недостаточно двух отдельных блоков Если друг под другом — один для поворота налево, другой для поворота направо? Проверьте в уме: собака стоит на левом повороте, и первый блок поворачивает её налево. Второй блок спрашивает, есть ли путь направо, и он есть, ведь именно оттуда собака пришла. Поэтому блок поворачивает собаку обратно. Одно решение должно исключать другое, а это как раз то, что делает иначе.
Задание
- 1
Приведите собаку к цели на всех трёх картах.