Задача № 4
Робот где-то в прямоугольнике. Несколько клеток в крайнем левом столбце закрашены. Робот должен покрасить в соседнем столбце клетки справа от закрашенных. Остановиться можно где угодно.
Задача понятна: дан прямоугольник клеток, слева в первом столбце закрашены некоторые клетки. Робот должен покрасить в соседнем столбце (то есть во втором столбце) exactly те клетки, которые расположены справа от закрашенных в первом столбце. Робот может остановиться в любом месте.
Детальное решение и объяснение
1) Что нужно сделать
- Найти все ряды i, в которых в левом столбце (1-й столбец) закрашена клетка (i, 1).
- В каждом таком ряду покрасить соседнюю клетку справа: клетку (i, 2).
- После этого можно остановиться, т. е. никаких дополнительных действий не требуется.
2) Как это сделать пошагово
- Шаг 1. Определить набор строк R, в которых закрашена клетка в левом столбце: R = {i | клетка (i, 1) закрашена}.
- Шаг 2. Для каждого i из R выполнить:
- Переместиться в клетку (i, 1) (левый столбец, та самая закрашенная клетка).
- Переместиться вправо в клетку (i, 2).
- Покрасить клетку (i, 2).
- Шаг 3. Остановиться.
3) Важные примечания
- Порядок обхода строк i из R не влияет на корректность: для каждой закрашенной в левом столбце клетки мы обязательно покрасим соответствующую ей клетку во втором столбце.
- Если в левом столбце нет закрашенных клеток, действий по покраске не требуется.
- В результате в во втором столбце будут окрашены ровно те клетки, которые находятся справа от закрашенных клеток в первом столбце.
4) Пример
Допустим, прямоугольник 5x4 (5 рядов, 4 столбца). В левом столбце закрашены клетки в рядах 2 и 4.
- i = 2: перейти в (2,1), перейти в (2,2) и покрасить её.
- i = 4: перейти в (4,1), перейти в (4,2) и покрасить её.
Итог: окрашены клетки (2,2) и (4,2). Роботу можно остановиться.
5) Псевдокод (для ясности)
- R = {i | клетка (i,1) закрашена}
- для i в R по возрастанию:
- перейти в (i,1)
- перейти в (i,2)
- покрасить (i,2)
- остановиться
6) Обоснование корректности
- По условию задачи нужно покрасить в втором столбце ровно те клетки, которые стоят справа от закрашенных в первом столбце. Наш план посещает каждую закрашенную клетку в левом столбце и немедленно красит её правого соседа во втором столбце. Таким образом выполняются требования задачи для всех таких строк i, и никаких лишних клеток не окрашиваются.
Если нужно, могу привести решение в виде более формального доказательства или адаптировать объяснение под конкретный уровень классов/предмета.