Контрольные задания > 5. На бесконечном поле имеется лестница. Сначала лестница слева направо спускается вниз, затем поднимается вверх. Высота каждой ступени - одна клетка, ширина - две клетки. Робот находится под верхней ступенькой правой части лестницы, в правой клетке. Количество ступеней, ведущих вниз, и количество ступеней, ведущих вверх, неизвестно.
Предлагается алгоритм для Робота, который необходимо
проанализировать и закрасить на предложенном рисунке все
клетки, которые должны оказаться закрашенными в ходе алгоритма.
закрасить
влево
ид пока не слева свободно
закрасить
вниз влево
закрасить влево
закрасить
влево вверх
ни пока не справа свободно закрасить
влево
закрасить
влево
вверх
кд кон
Вопрос:
5. На бесконечном поле имеется лестница. Сначала лестница слева направо спускается вниз, затем поднимается вверх. Высота каждой ступени - одна клетка, ширина - две клетки. Робот находится под верхней ступенькой правой части лестницы, в правой клетке. Количество ступеней, ведущих вниз, и количество ступеней, ведущих вверх, неизвестно.
Предлагается алгоритм для Робота, который необходимо
проанализировать и закрасить на предложенном рисунке все
клетки, которые должны оказаться закрашенными в ходе алгоритма.
закрасить
влево
ид пока не слева свободно
закрасить
вниз влево
закрасить влево
закрасить
влево вверх
ни пока не справа свободно закрасить
влево
закрасить
влево
вверх
кд кон
Ответ:
**Решение:**
Алгоритм закрашивает клетки, следуя по лестнице. Разберем его по шагам, учитывая, что робот начинает под верхней ступенькой правой части лестницы:
1. `закрасить`: Закрашивает текущую клетку (под ступенькой).
2. `влево`: Перемещается влево.
3. `нц пока не слева свободно`: Цикл выполняется, пока слева не свободно (то есть пока есть ступенька).
4. `закрасить`: Закрашивает текущую клетку (ступеньку).
5. `вниз влево`: Перемещается вниз и влево (на следующую ступеньку).
6. `закрасить влево`: Перемещается влево и закрашивает эту клетку (ступеньку).
7. `закрасить`: Закрашивает текущую клетку (под ступенькой).
8. `влево вверх`: Перемещается влево и вверх (на следующую ступеньку).
9. `кц пока не справа свободно`: До этого места алгоритм красил ступеньки слева направо вниз. Начинается подъем лестницы справа налево вверх.
10. `ни пока не справа свободно закрасить`: Цикл выполняется, пока справа не свободно.
11. `закрасить`: Закрашивает текущую клетку (ступеньку).
12. `влево`: Перемещается влево.
13. `закрасить`: Закрашивает текущую клетку (под ступенькой).
14. `влево`: Перемещается влево.
15. `вверх`: Перемещается вверх.
**Анализ:**
Алгоритм закрашивает клетки под ступенями и сами ступени при спуске слева направо и при подъеме лестницы справа налево.
**Изображение:**
Представьте себе лестницу, как на рисунке в задании. Робот, начиная под верхней ступенькой справа, закрашивает эту клетку, затем двигается влево и закрашивает ступеньки, спускаясь вниз. Когда спуск заканчивается, робот начинает подниматься, закрашивая ступеньки и клетки под ними при подъеме.
Обратите внимание, что без рисунка точно определить закрашенные клетки сложно, но логика алгоритма позволяет понять, какие именно клетки будут закрашены.