Задание требует написать программу для робота, которая закрасит определенные клетки на поле. Робот должен использовать не менее 3 циклических алгоритмов. Условие задачи подразумевает, что робот должен закрасить клетки, расположенные между верхними краями вертикальных стен и непосредственно над горизонтальной стеной.
На основе рисунка, клетки, которые нужно закрасить, образуют собой букву "Г", повернутую на 90 градусов против часовой стрелки. Робот стартует в клетке, расположенной между верхними краями вертикальных стен, в третьей клетке справа от левой вертикальной стены.
Для решения задачи будем использовать команды робота:
вверхвнизвлевовправозакраситьнц ... кц (цикл с известным числом повторений)нц ... пока ... кц (цикл с условием)Алгоритм:
Пример программы (на псевдокоде):
Начальная позиция робота: (3, 3) (x=3, y=3, отсчитывая от верхнего левого угла поля, где (1,1) - самая верхняя левая клетка).
Конечная область закрашивания: клетки (3,3), (3,4), (3,5), (4,5), (5,5).
Программа:
// Перемещение к первой клетке закрашивания (3,3) нц 2 раз вниз кц закрасить // Закрашивание вертикальной части (3 клетки вниз) нц 3 раз вниз закрасить кц // Перемещение к началу горизонтальной части (4,5) вправо закрасить // Закрашивание горизонтальной части (2 клетки вправо) нц 2 раз вправо закрасить кц Примечание: Точные координаты стартовой клетки робота зависят от системы координат, принятой в среде исполнителя. Данный пример использует условные координаты. Робот должен также выполнить условие использования не менее 3 циклических алгоритмов.
Альтернативный вариант (с использованием цикла пока):
// Перемещение к первой клетке закрашивания (3,3) нц 2 раз вниз кц закрасить // Закрашивание вертикальной части нц пока не стена сверху вниз закрасить кц // Перемещение к началу горизонтальной части (4,5) вправо закрасить // Закрашивание горизонтальной части нц пока не стена справа вправо закрасить кц Объяснение:
Первый цикл (нц 2 раз) перемещает робота на две клетки вниз, чтобы он оказался в первой клетке для закрашивания. Затем клетка закрашивается.
Второй цикл (нц 3 раз или нц пока не стена сверху) закрашивает вертикальную часть фигуры, перемещая робота вниз на 3 клетки и закрашивая каждую.
После вертикальной части робот делает шаг вправо, закрашивает эту клетку, которая является началом горизонтальной части.
Третий цикл (нц 2 раз или нц пока не стена справа) закрашивает горизонтальную часть фигуры, перемещая робота вправо на 2 клетки и закрашивая каждую.
Этот алгоритм гарантирует закрашивание всех необходимых клеток и соответствует условию использования минимум трех циклических алгоритмов.