Petrиспользовать Робот
алг
нач
нц пока справа свободно
вправо
нц пока сверху стена
закрасить; выход
кц
кц
нц если справа стена то
закрасить; вниз
иначе вниз
все
кц_при справа стена
нц если справа стена то
закрасить; вниз
иначе выход
все
кц
кон
Возможно, немного коряво, но работает. Там есть пара нюансов. На горизонтальной стене может быть сколько угодно проходов, он их все пропустит, пока не упрется в вертикальную.
На вертикальной стене проход может быть только один. Когда у робота кончится слева стена второй раз - он остановится. Конечно, на бесконечном поле его можно было не останавливать, он просто будет уходить бесконечно далеко вниз, занимая память компьютера, но это неправильно.
put out