Нц пока слева свободно

Влево

кц

                   
                   
                   
                   
                   
                   
                   
    Р              
                   
                   

| Двигаемся вверх, пока не дойдём до прохода в стене, и закрашиваем клетки

Нц пока не слева свободно

Закрасить

Вверх

кц

                   
                   
                   
                   
    Р              
                   
                   
                   
                   
                   

| Двигаемся дальше до вертикальной стены

Нц пока слева свободно

Вверх

кц

                   
                   
                   
    Р              
                   
                   
                   
                   
                   
                   

| Двигаемся вверх до конца стены и закрашиваем клетки

Нц пока не слева свободно

Закрасить

Вверх

кц

    Р              
                   
                   
                   
                   
                   
                   
                   
                   
                   

| Обходим стену

Влево

Вниз

                   
  Р                
                   
                   
                   
                   
                   
                   
                   
                   

| Двигаемся вниз, пока не дойдём до прохода в стене, и закрашиваем клетки

Нц пока не справа свободно

Закрасить

Вниз

кц

                   
                   
                   
                   
  Р                
                   
                   
                   
                   
                   

| Двигаемся дальше до вертикальной стены

Нц пока справа свободно

Вниз

кц

                   
                   
                   
                   
                   
  Р                
                   
                   
                   
                   

| Двигаемся вниз до конца стены и закрашиваем клетки

Нц пока не справа свободно

Закрасить

Вниз

кц

                   
                   
                   
                   
                   
                   
                   
                   
  Р                
                   

Следует проверить универсальность составленного алгоритма, протестировав его в других условиях среды, удовлетворяющих тексту задания, например:

                   
                   
                   
                   
                   
                   
                   
                   
              Р    
                   
                   
                   
                   
                   
                   
                   
                   
              Р    
                   
                   

Возможны и другие верные варианты решения.

Задача 2:

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

На рисунке указан один из возможных вариантов галереи и расположения Робота (Робот обозначен буквой «Р»).

         
         
         
         
    Р    
         
         
         
         
         
         

Напишите алгоритм, закрашивающий клетки галереи, ограниченные не менее чем двумя стенами. Требуется закрасить только клетки, удовлетворяющие данному условию. Например, для приведённого выше рисунка Робот должен закрасить следующие клетки (см. рисунок):

         
         
         
         
         
         
         
         
         
         
         

Конечное расположение Робота может быть произвольным. Алгоритм должен решать задачу для произвольного размера галереи и любого допустимого расположения и размера выходов из галереи. При исполнении алгоритма Робот не должен разрушиться, выполнение алгоритма должно завершиться. Алгоритм может быть выполнен в среде формального исполнителя или записан в текстовом редакторе.

Решение:

| Двигаемся в начальную позицию – нижнюю клетку галереи

Нц пока снизу свободно

Вниз

кц

Необходимо закрасить клетки галереи, ограниченные не менее чем двумя стенами, т.е. двумя, тремя или четырьмя стенами (такое возможно, если длина галереи - одна клетка).

Отдельно обрабатываем нижнюю клетку галереи, у которой уже есть одна стена – нижняя. Для того, чтобы она стала закрашенной, достаточно еще хотя бы одной стены – правой или левой или верхней (если длина галереи - одна клетка). Используем команду условия если, применяя сложное условие с логической связкой или: (не справа свободно) или (не слева свободно) или (не сверху свободно). Если это условие будет выполнено, то нижняя клетка галереи будет закрашена.

| Отдельно обрабатываем нижнюю клетку галереи


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: