Задача по информатике (Робот и закрашивание клеток)
Вопрос: Сколько клеток закрасит Робот, выполнив такой алгоритм?
Алгоритм:
нц пока справа свободно вверх вправо закрасить вниз кц
Стартовая позиция Робота: На рисунке обозначена буквой P.
Рисунок поля:
+---+---+---+---+---+---+---+---+ | | | | | | | | | +---+---+---+---+---+---+---+---+ | P | | | | | | | | +---+---+---+---+---+---+---+---+ | | | | | | | | | +---+---+---+---+---+---+---+---+ | | | | | | | | | +---+---+---+---+---+---+---+---+ | | | | | | | | | +---+---+---+---+---+---+---+---+
На рисунке поле имеет 8 столбцов и 6 строк. Робот начинает в клетке P, которая находится во втором ряду (считая сверху) и в первом столбце. Справа от последнего (8-го) столбца находится стена.
Решение:
Проследим за движением Робота по шагам. Цикл нц пока справа свободно будет повторяться до тех пор, пока справа от Робота не окажется стена.
Начальная позиция: Робот находится в клетке P (1-й столбец, 2-я строка).
1. Первый проход цикла:
- Проверка условия:
справа свободно? Да, справа от Робота (в 1-м столбце) нет стены. - Действие 1:
вверх. Робот перемещается из (1-й столбец, 2-я строка) в (1-й столбец, 1-я строка). - Действие 2:
вправо. Робот перемещается из (1-й столбец, 1-я строка) в (2-й столбец, 1-я строка). - Действие 3:
закрасить. Робот закрашивает текущую клетку (2-й столбец, 1-я строка). (1-я закрашенная клетка) - Действие 4:
вниз. Робот перемещается из (2-й столбец, 1-я строка) в (2-й столбец, 2-я строка).
Теперь Робот находится во 2-м столбце, 2-й строке.
2. Второй проход цикла:
- Проверка условия:
справа свободно? Да, справа от Робота (во 2-м столбце) нет стены. - Действие 1:
вверх. Робот перемещается из (2-й столбец, 2-я строка) в (2-й столбец, 1-я строка). - Действие 2:
вправо. Робот перемещается из (2-й столбец, 1-я строка) в (3-й столбец, 1-я строка). - Действие 3:
закрасить. Робот закрашивает текущую клетку (3-й столбец, 1-я строка). (2-я закрашенная клетка) - Действие 4:
вниз. Робот перемещается из (3-й столбец, 1-я строка) в (3-й столбец, 2-я строка).
Теперь Робот находится в 3-м столбце, 2-й строке.
Этот процесс будет продолжаться. Робот каждый раз будет перемещаться на одну клетку вправо по 2-й строке (это его "базовая" позиция для проверки условия), затем подниматься на 1-ю строку, двигаться вправо, закрашивать клетку и возвращаться на 2-ю строку.
Робот будет закрашивать клетки в 1-й строке, начиная со 2-го столбца.
- Когда Робот находится в 1-м столбце (позиция P), он закрашивает клетку во 2-м столбце.
- Когда Робот находится во 2-м столбце, он закрашивает клетку в 3-м столбце.
- ...
- Когда Робот находится в 7-м столбце, он закрашивает клетку в 8-м столбце.
После того как Робот закрасит клетку в 8-м столбце (это будет клетка (8-й столбец, 1-я строка)) и вернется в (8-й столбец, 2-я строка), он снова проверит условие:
- Проверка условия:
справа свободно? Нет, справа от Робота (в 8-м столбце) находится стена (край поля).
Цикл завершается.
Подсчет закрашенных клеток:
Робот закрасил клетки в следующих столбцах (все в 1-й строке): 2, 3, 4, 5, 6, 7, 8.
Всего закрашено 7 клеток.
Ответ:
7 клеток.
