Робот в крайней левой клетке горизонтального коридора. В каждой клетке могут быть проходы вверх, вниз или в обоих направлениях. Робот должен покрасить те клетки, в которых есть только один проход, и остановиться в крайней правой клетке коридора.

Приложения:

Ответы

Ответ дал: Ziorar
0

Вот несколько вариантов программы (по идее, все должны работать нормально, но я не знаю какие там команды и операции разрешены):

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()

Вас заинтересует