Робот в крайней левой клетке горизонтального коридора. В каждой клетке могут быть проходы вверх, вниз или в обоих направлениях. Робот должен покрасить те клетки, в которых есть только один проход, и остановиться в крайней правой клетке коридора.
![](https://st.uroker.com/files/29c/29cf6dd075b21576755c7e0173ee6fd4.png)
Ответы
Вот несколько вариантов программы (по идее, все должны работать нормально, но я не знаю какие там команды и операции разрешены):
1. Если длина коридора всегда 5 клеток, то можно сделать цикл на 5 повторов:
for count in range(5):
if wall_from_up() and free_from_down():
fill_cell()
if free_from_up() and wall_from_down():
fill_cell()
if free_from_right():
move_right()
2. Хотя, наверное логические функции там недоступны. Тогда, можно так:
for count in range(5):
if wall_from_up():
if free_from_down():
fill_cell()
if free_from_up():
if wall_from_down():
fill_cell()
if free_from_right():
move_right()
3. Если же длина может меняться, то так можно, с выходом из цикла по условию:
while True:
if wall_from_up() and free_from_down():
fill_cell()
if free_from_up() and wall_from_down():
fill_cell()
if wall_from_right():
break
move_right()
4. Или, версия без логических функций:
while True:
if wall_from_up():
if free_from_down():
fill_cell()
if free_from_up():
if wall_from_down():
fill_cell()
if wall_from_right():
break
move_right()
5. Ну, и как самый дурной вариант- после цикла можно повторить проверку/закраску:
while(free_from_right()):
if wall_from_up():
if free_from_down():
fill_cell()
if free_from_up():
if wall_from_down():
fill_cell()
move_right()
if wall_from_up():
if free_from_down():
fill_cell()
if free_from_up():
if wall_from_down():
fill_cell()