ну тут всё просто, два вложенных цикла, например внутренний цикл закрашивает строку слева направо, и возвращает робота вначало. внешний цикл перемещает если надо робота вниз.
если пытаться сделать движение влево - полезным, закрашивая вторую строку, то сложность увеличивается.