Возможно, немного коряво, но работает. Там есть пара нюансов. На горизонтальной стене может быть сколько угодно проходов, он их все пропустит, пока не упрется в вертикальную.
На вертикальной стене проход может быть только один. Когда у робота кончится слева стена второй раз - он остановится. Конечно, на бесконечном поле его можно было не останавливать, он просто будет уходить бесконечно далеко вниз, занимая память компьютера, но это неправильно.
Докуметация к этим командам:
forward(distance)
Move the turtle forward by the specified distance.
Aliases: forward | fd
Argument:
distance -- a number (integer or float)
Move the turtle forward by the specified distance, in the direction
the turtle is headed.
Example:
>>> position()
(0.00, 0.00)
>>> forward(25)
>>> position()
(25.00,0.00)
>>> forward(-75)
>>> position()
(-50.00,0.00)
т.е. forward и fd делают одно и то же. перемещает курсор на n координат перёд. пример есть в докуметации
Объяснение:
использовать Робот
алг
нач
нц пока справа свободно
вправо
нц пока сверху стена
закрасить; выход
кц
кц
нц если справа стена то
закрасить; вниз
иначе вниз
все
кц_при справа стена
нц если справа стена то
закрасить; вниз
иначе выход
все
кц
кон
Возможно, немного коряво, но работает. Там есть пара нюансов. На горизонтальной стене может быть сколько угодно проходов, он их все пропустит, пока не упрется в вертикальную.
На вертикальной стене проход может быть только один. Когда у робота кончится слева стена второй раз - он остановится. Конечно, на бесконечном поле его можно было не останавливать, он просто будет уходить бесконечно далеко вниз, занимая память компьютера, но это неправильно.