Ответ:

Идея: сначала попасть в клетку слева от вертикальной стены и на одну клетку выше горизонтальной. Затем пройти над горизонтальной стеной до её правого конца и закрашивать клетки под ней, двигаясь влево. Стены не дают Роботу выйти за пределы нужного ряда; перед каждым шагом проверяется возможность движения.

Условные обозначения алгоритма: «сверху свободно», «справа свободно», «снизу свободно» — соответствующие проверки; «закрасить» — закрасить текущую клетку. Команды движения выполняются только после проверки свободной клетки.

  1. Двигаться вниз, пока снизу свободно. Так Робот окажется в нижнем ряду поля.
  2. Двигаться вправо, пока справа свободно. Так Робот окажется в крайнем правом столбце.
  3. Двигаться вверх, пока сверху свободно. Робот поднимется до ряда клеток, расположенных непосредственно ниже горизонтальной стены: сама стена сверху остановит движение.
  4. Закрасить текущую клетку.
  5. Пока слева свободно: перейти на одну клетку влево; если сверху свободно, закрасить эту клетку.

Проверка корректности: горизонтальная стена расположена в ряду выше нужных клеток, а вертикальная стена отделяет нужный участок от левой части поля. Поэтому после подъёма Робот находится в требуемом ряду у правой границы поля. Двигаясь влево, он закрашивает клетки этого ряда; когда сверху стена, клетка примыкает к горизонтальной стене, и её нужно закрасить. Если сверху свободно, клетка не примыкает к стене, и её следует оставить незакрашенной. Движение влево прекращается у вертикальной стены, поэтому Робот не закрашивает клетки с другой стороны. Все циклы ограничены границами поля или стенами, значит алгоритм завершается и Робот не разрушится.