Контрольные задания > Задание 12: На бесконечном поле имеются четыре стены, расположенные в форме квадрата. Длина каждой стены 4 клетки. Робот находится над верхней горизонтальной стеной во второй клетке от левого верхнего угла. Напишите для Робота программу, использующую не менее 3 циклических алгоритмов, закрашивающую все клетки справа, снизу и слева от квадрата, прилегающие к нему, а также соответствующие угловые клетки. Вы можете использовать цикл нц-раз-кц или нц-пока-кц. Робот должен закрасить только клетки, удовлетворяющие данному условию. На рисунке показаны клетки, которые Робот должен закрасить (см. рисунок).
Вопрос:
Задание 12: На бесконечном поле имеются четыре стены, расположенные в форме квадрата. Длина каждой стены 4 клетки. Робот находится над верхней горизонтальной стеной во второй клетке от левого верхнего угла. Напишите для Робота программу, использующую не менее 3 циклических алгоритмов, закрашивающую все клетки справа, снизу и слева от квадрата, прилегающие к нему, а также соответствующие угловые клетки. Вы можете использовать цикл нц-раз-кц или нц-пока-кц. Робот должен закрасить только клетки, удовлетворяющие данному условию. На рисунке показаны клетки, которые Робот должен закрасить (см. рисунок).
Ответ:
Предположим, что у нас есть команды:
`вправо` - робот перемещается вправо.
`влево` - робот перемещается влево.
`вверх` - робот перемещается вверх.
`вниз` - робот перемещается вниз.
`закрасить` - робот закрашивает текущую клетку.
`стена_справа` - функция, которая возвращает истину, если справа стена.
`стена_слева` - функция, которая возвращает истину, если слева стена.
`стена_снизу` - функция, которая возвращает истину, если снизу стена.
`стена_сверху` - функция, которая возвращает истину, если сверху стена.
Вот программа:
алг
нач
\# Закрашиваем клетки справа от квадрата
нц 4 раз
закрасить
вправо
кц
влево \# Возвращаемся к квадрату
\# Закрашиваем клетки снизу от квадрата
вниз
нц 5 раз
закрасить
влево
кц
вправо \# Возвращаемся к квадрату
\# Закрашиваем клетки слева от квадрата
вверх
нц 4 раз
закрасить
влево
кц
вправо \# Возвращаемся к квадрату
\# Закрашиваем верхний ряд слева направо
вверх
нц 3 раз
вправо
кц
нц 5 раз
закрасить
влево
кц
вправо \# Возвращаемся к квадрату
кон
Объяснение:
1. Закрашиваем клетки справа: Робот начинает справа от квадрата и закрашивает 4 клетки вправо.
2. Закрашиваем клетки снизу: Робот перемещается вниз, затем закрашивает 4 клетки влево.
3. Закрашиваем клетки слева: Робот перемещается вверх и закрашивает 4 клетки влево.
4. Закрашиваем клетки сверху: Робот перемещается вверх и закрашивает 4 клетки слева.