Задача 6. (8 баллов) Разобрать по бревнышку 2.
На поле исполнителя из кубиков собран прямоугольник.
Исполнитель расположен слева перед первым кубиком основания:

  ─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼
   │ │a│b│c│ │ │ │ │ │ │ │ │ │
  ─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼
   │ │7│8│9│ │ │ │ │ │ │ │ │ │
  ─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼
   │ │4│5│6│ │ │ │ │ │ │ │ │ │
  ─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼
   │¤│1│2│3│ │ │ │ │ │ │ │ │ │
  ─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼

Преобразовать прямоугольник в горизонтальный отрезок:

  ─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼
   │ │ │ │ │ │ │ │ │ │ │ │ │ │
  ─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼
   │ │ │ │ │ │ │ │ │ │ │ │ │ │
  ─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼
   │ │ │ │ │ │ │ │ │ │ │ │ │ │
  ─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼
   │¤│a│b│c│7│8│9│4│5│6│1│2│3│
  ─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼


Дополнительные условия:

1) Поле исполнителя бесконечно по всем четырем направлениям.
2) Ширина и высота прямоугольника - произвольные.
3) Надписи на кубиках могут быть любыми.

п р о в е р к а  к у р а т о р а

Команда 3101
------------
.\01\01.txt
Оценка: 0

Нет решения.

Команда 3102
------------
.\02\02.txt
Оценка: 0

Нет решения.

Команда 3108
------------
.\08\08.txt
Оценка: 1
Автор решения: Сухаренко Мария
Описание алгоритма: Кукарача ищет верхнее бревно, после чего проверяет,
есть ли еще бревно внизу, если есть, проверяет есть ли бревно над ним,
сдвигая соответственно все нижние бревна по мере своего продвижения
к краю верхнего бревна. Когда верхнее бревно кончается, Кукарача выравнивает
следующее за ним бревно по его правому краю (если, предположим, правый край
верхнего бревна находится в 6-м столбце, то левый край нижнего, следующего
за верхним, бревна будет находиться в 7-ом столбце). Таким образом Кукарача
строит лесенку из любого количества бревен. Вся сложность оказалась в том,
чтобы после построения лесенки вернуть Кукарачу в столбец, в котором
находится левый край самого верхнего бревна, чтобы начать укладывание
бревен в одну горизонтальную линию. В случае данного решения возврат
Кукарачи в позицию, откуда он начинает укладку бревен, выполнен неправильно,
алгоритм не работает правильно, если изменить размеры прямоугольника.
Далее Кукарача, двигаясь вверх отыскивает очередной кубик и укладывает
его на горизонталь, до тех пор пока справа не окажется кубик с символом,
тогда укладывается последнее бревно.

Программа:  

ЭТО БРЕВНА                             
РАЗБОР
УКЛАДКА                                
ХВОСТ                                  
КОНЕЦ                                  
//-------------------------------------
ЭТО РАЗБОР //Поиск верхнего бревна     
ВПРАВО                                 
ЕСЛИ НЕ ПУСТО ТО                       
{                                      
ВЛЕВО                                  
ВВЕРХ                                  
РАЗБОР                                 
}                                      
ИНАЧЕ РАЗБОР_1
КОНЕЦ
//-------------------------------------
ЭТО РАЗБОР_1 // Испонитель проверяет   
//наличие следующего бревна и          
//выстраивает из бревен лесенку.
                                       
ПОВТОРИ 2 ВНИЗ
ВПРАВО                                 
ЕСЛИ НЕ ПУСТО ТО
{                                      
 ПРОВЕРЬ                               
 РАЗБОР_1                              
}
ИНАЧЕ                                  
{                                      
 ПОВТОРИ 3 ВВЕРХ                       
 ВЛЕВО                                 
 ВВЕРХ                                 
}                                      
ПОВТОРИ 2 ВЛЕВО                        
КОНЕЦ                                  
//-------------------------------------
ЭТО ПРОВЕРЬ //Исполнитель проверяет
//наличие верхнего бревна и вырав-     
//нивает  нижние бревна по правому     
//краю верхнего бревна                 
ВВЕРХ
ЕСЛИ НЕ ПУСТО ТО                       
{
ВЛЕВО                                  
ПОВТОРИ 2 ВНИЗ
СДВИГ                                  
 ВПРАВО                                
 ПРОВЕРЬ                               
}
ИНАЧЕ ВЫРОВНЯТЬ //Исполнитель вырав-   
//нивает бревно под верх-              
//ним бревном.                         
КОНЕЦ                                  
//-------------------------------------
ЭТО ВЫРОВНЯТЬ                          
ПОВТОРИ 2 ВНИЗ                         
ЕСЛИ НЕ ПУСТО ТО                       
ПОВТОРИ 2 ВВЕРХ
ВЫРОВНЯТЬ_1
КОНЕЦ                                  
//-------------------------------------
ЭТО ВЫРОВНЯТЬ_1                        
ВПРАВО
ВНИЗ                                   
ЕСЛИ НЕ ПУСТО ТО
{                                      
ВВЕРХ
ВЫРОВНЯТЬ_1                            
}                                      
ИНАЧЕ                                  
{
 ВНИЗ                                  
 ВЛЕВО                                 
ВВЕРХ                                  
}                                      
ВЛЕВО                                  
КОНЕЦ                                  
//-------------------------------------
ЭТО СДВИГ //Сдвиг бревен на 1 клетку   
ВПРАВО
ЕСЛИ НЕ ПУСТО ТО
{                                      
ВЛЕВО                                  
ВНИЗ                                   
СДВИГ
}                                      
ВВЕРХ
КОНЕЦ                                  
//-------------------------------------
ЭТО УКЛАДКА //Исполнитель укладывает   
//бревна на горизонталь.               
УКЛАДКА_1                              
УКЛАДКА_2
КОНЕЦ                                  
ЭТО УКЛАДКА_2                          
ВПЕРЕД                                 
ВНИЗ                                   
ВПРАВО                                 
НАЗАД                                  
ВПРАВО                                 
ЕСЛИ ПУСТО ТО                          
{
 ВЛЕВО
 УКЛАДКА_1                             
 УКЛАДКА_2                             
 }                                     
КОНЕЦ
ЭТО УКЛАДКА_1 //Поиск очередного куби- 
//ка.
ВВЕРХ                                  
ЕСЛИ  ПУСТО ТО УКЛАДКА_1
ИНАЧЕ                                  
{                                      
ВПЕРЕД                                 
ПОВТОРИ 2 ВВЕРХ
НАЗАД                                  
ВНИЗ                                   
}                                      
ВНИЗ                                   
КОНЕЦ                                  
//-------------------------------------
ЭТО ХВОСТ //Укладка последнего бревна. 
ХВОСТ_1                                
ОКОНЧАНИЕ
КОНЕЦ
ЭТО ХВОСТ_1                            
ВНИЗ                                   
ВПРАВО                                 
ВВЕРХ
ЕСЛИ НЕ ПУСТО ТО ХВОСТ_1               
ИНАЧЕ
{                                      
ВВЕРХ
ПОВТОРИ 2 ВЛЕВО                        
ВВЕРХ                                  
}                                      
ВЛЕВО
КОНЕЦ                                  
ЭТО ОКОНЧАНИЕ                          
ВПРАВО                                 
ВНИЗ                                   
ЕСЛИ НЕ ПУСТО ТО                       
{                                      
ВВЕРХ                                  
ОКОНЧАНИЕ                              
}
КОНЕЦ

к о м м е н т а р и й  к у р а т о р а
Алгоритм и программа, конечно, очень сложные. И в общем случае не
работают, а значит, получается, что они неверные.

Команда 3110
------------
.\10\10.txt
Оценка: 0

Нет решения.

Команда 3113
------------
.\13\13.txt
Оценка: 0

Нет решения.

Команда 3114
------------
.\14\14.txt
Оценка: 0

Нет решения.


Команда 3115
------------
.\15\15.txt
.\15\1561.coc

Оценка: 8

Решение 1561
Автор Завражнов Владимир

Описание алгоритма
   Процедурой Разложи я запускаю процедуры
процедуры Толчок и Верни_2 до тех пор, пока брёвна не кончатся.
Процедура Толчок выталкивает нижнее бревно, проверяя, есть ли кубики
наверху, откладывает процедуру Верни и продолжает пока над ним не
останется кубиков. Когда кубиков не осталось, он делает Толчок_2,
а потом рекурсивно запускается Верни.
   Процедурой Толчок_2 я поднимаюсь наверх всех бревен.
Процедурой Верни я складываю все бревна на уровень первого. 
Процедурой Верни_2 я спускаюсь на начало всех бревен.

Программа
//-------------------------------------
// описание                            
ЭТО Разложи                            
 ВПРАВО ВВЕРХ                          
 ПОКА НЕ ПУСТО                         
         {                             
          Толчок                       
          Верни_2                      
         }                             
 ВНИЗ                                  
КОНЕЦ // Разложи                       
//-------------------------------------
// описание                            
ЭТО Толчок                             
 ВНИЗ ВПРАВО ВВЕРХ                     
 ЕСЛИ НЕ ПУСТО
  ТО { Толчок Верни }                  
  ИНАЧЕ                                
  { Толчок_2 ВЛЕВО ПОВТОРИ 2 ВНИЗ }    
КОНЕЦ // Толчок                        
//-------------------------------------
// описание
ЭТО Толчок_2                           
 ВВЕРХ ВЛЕВО                           
 ПОКА НЕ ПУСТО { ВПРАВО ВВЕРХ ВЛЕВО }  
КОНЕЦ // Толчок_2                      
//-------------------------------------
// описание                            
ЭТО Верни                              
 ПОВТОРИ 2 ВВЕРХ                       
 ВЛЕВО                                 
 ПОВТОРИ 2 ВНИЗ
КОНЕЦ // Верни                         
//-------------------------------------
// описание                            
ЭТО Верни_2
 ВЛЕВО ВНИЗ ВПРАВО                     
 ПОКА НЕ ПУСТО { ВЛЕВО ВНИЗ ВПРАВО }
 ВВЕРХ ВПРАВО ВВЕРХ                    
КОНЕЦ // Верни_2                       

к о м м е н т а р и й  к у р а т о р а
Программа работает правильно, замечаний нет.


Команда 3118
------------
.\18\18.txt
.\18\1861.coc

Автор решения: Николенко Катя
Оценка: 6

Алгоритм не описан.

п р о г р а м м а
ЭТО Разбор_по_бревнышку
  ВПРАВО
  ВЛЕВО
  ВВЕРХ
  На_вершину
КОНЕЦ // Разбор_по_бревнышку

//-------------------------------------
ЭТО На_вершину
  ВПРАВО
  ЕСЛИ НЕ ПУСТО
    ТО
      {
      ВЛЕВО
      ВВЕРХ
      На_вершину
      }
    ИНАЧЕ
      {
      ПОВТОРИ 2
        {
        ВНИЗ
        ВПРАВО
        ВЛЕВО
        }
      ВНИЗ
      Высота
      }
КОНЕЦ // На_вершину

//-------------------------------------
ЭТО Высота
  ВПРАВО
  ЕСЛИ НЕ ПУСТО
    ТО
      {
      ВЛЕВО
      ВНИЗ
      Высота
      }
    ИНАЧЕ ВВЕРХ
  Нижнее_бревно
  На_вершину_столбца
КОНЕЦ // Высота

//-------------------------------------
ЭТО Нижнее_бревно
  ВПРАВО
  ВВЕРХ
  ЕСЛИ НЕ ПУСТО
    ТО
      {
      ВНИЗ
      Нижнее_бревно
      }
  ВЛЕВО
КОНЕЦ // Нижнее_бревно

//-------------------------------------
ЭТО На_вершину_столбца
  ВВЕРХ
  ВПРАВО
  ЕСЛИ НЕ ПУСТО
    ТО
      {
      ВЛЕВО
      На_вершину_столбца
      }
    ИНАЧЕ Опускаем_столбцы
  ВНИЗ
КОНЕЦ // На_вершину_столбца

//-------------------------------------
ЭТО Опускаем_столбцы
  ВПРАВО
  ПОВТОРИ 2 ВНИЗ
  ЕСЛИ НЕ ПУСТО
    ТО
      {
      ПОВТОРИ 2 ВВЕРХ
      Опускаем_столбцы
      }
    ИНАЧЕ ВВЕРХ
  ВЛЕВО
КОНЕЦ // Опускаем_столбцы

к о м м е н т а р и й  к у р а т о р а
Программа работает. Но усилий исполнитель затрачивает неразумно
много.
