Задача 7. (7 баллов) Кирпич на другой столбик.
На поле два столбика кирпичей. Снять верхний кирпич с первого
столбика, положить на второй столбик и вернуться в исходное положение
(слева от нижнего кирпича первого столбика). Столбики отстоят друг от
друга на две клетки:

  ├─┼─┼─┼─┼─┼─┼─┼─┼         ├─┼─┼─┼─┼─┼─┼─┼─┼
  │ │ │ │ │ │ │ │ │         │ │ │ │ │ │ │ │ │
  ├─┼─┼─┼─┼─┼─┼─┼─┼         ├─┼─┼─┼─┼─┼─┼─┼─┼
  │ │1│ │ │ │ │ │ │         │ │ │ │ │ │ │ │ │
  ├─┼─┼─┼─┼─┼─┼─┼─┼         ├─┼─┼─┼─┼─┼─┼─┼─┼
  │ │2│ │ │ │ │ │ │  ───>   │ │2│ │ │1│ │ │ │
  ├─┼─┼─┼─┼─┼─┼─┼─┼         ├─┼─┼─┼─┼─┼─┼─┼─┼
  │¤│3│ │ │Ш│ │ │ │         │¤│3│ │ │Ш│ │ │ │
  ├─┼─┼─┼─┼─┼─┼─┼─┼         ├─┼─┼─┼─┼─┼─┼─┼─┼
  │ │ │ │ │ │ │ │ │         │ │ │ │ │ │ │ │ │
  ├─┼─┼─┼─┼─┼─┼─┼─┼         ├─┼─┼─┼─┼─┼─┼─┼─┼

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

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

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

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

а л г о р и т м
Нет описания

п р о г р а м м а
ЭТО СТОЛБИК
 ПОВТОРИ 2 ВВЕРХ                       
 ПОВТОРИ 3 ВПРАВО                      
 ВВЕРХ                                 
 ВПРАВО                                
 ВНИЗ                                  
 ПОВТОРИ 2 ВЛЕВО                       
 ПОВТОРИ 3 ВНИЗ                        
 ПОВТОРИ 2 ВЛЕВО                       
 ВВЕРХ                                 
КОНЕЦ                                  

к о м м е н т а р и й  к у р а т о р а
Частное решение

Команда 3102
------------
.\02\02.txt
.\02\0271.coc

Оценка: 0
Авторы решения:
Соколов Денис. А.

к о м м е н т а р и й  к у р а т о р а
Решения этой задача в архиве не обнаружено.


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

Нет решения.

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

Нет решения.

Команда 3113
------------
.\13\13.txt
.\13\1371.coc

Оценка: 3
Авторы решения: Носков Андрей и Моргунов Никита
Алгоритм
Организуем рекурсивный просмотр столбца из кубиков.
Если кубиков больше нет, то верхний двигаем в правый столбик.
Проходим между столбиками. Если в правом столбике куиков нет,
то проверяем левый столбик. Если в левом столбике кубик есть, 
то проверяем есть ли над ним кубик. Кубика нет, идем к сдвинутому
в правый столбик кубику и сдвигаем его вниз. Возвращаем сдвинутые  
кубики на свои места и возвращаемся в начало.

Решение

ЭТО кубик                |              
дом                      | Проверяем наличие кубиков в левом столбце             
ВВЕРХ                    | Компенсируем один шаг рекурсивной пружинки             
сад                      | Проверяем наличие кубиков в правом столбце             
дерево                   | Проверяем наличие кубиков в левом столбце             
ПОВТОРИ 2 ВЛЕВО          |              
ВВЕРХ                    | Возвращаемся в начальное положение
КОНЕЦ                    |              
ЭТО дом                  | Проверяем наличие кубиков в левом столбце             
ВПРАВО                   | Толкаем кубик вправо
ЕСЛИ НЕ ПУСТО ТО шаг     | Если кубик есть, то выполняем шаг            
ИНАЧЕ {                  |      кубика нет        
       ВНИЗ              |    - спускаемся к верхнему кубику         
       ПОВТОРИ 2 ВПРАВО  |    - толкаем верхний кубик в левый         
       }                 |      столбик        
КОНЕЦ                    |              
ЭТО шаг                  | Идем к следующему кубику             
ВЛЕВО                    | Становимся слева от столбика с кубиками             
ВВЕРХ                    | Делаем шаг вдоль столбика             
дом                      | Проверяем наличие кубиков в столбце             
ВНИЗ                     | Рекурсивная пружина             
КОНЕЦ                    |              
ЭТО сад                  | Проверяем наличие кубиков в правом столбце             
ВПРАВО                   | Толкаем кубик вправо             
ЕСЛИ НЕ ПУСТО ТО {       | Если кубик есть, то             
                  ВЛЕВО  | - Становимся слева от столбика с кубиками            
                  ВВЕРХ  | - Делаем шаг вдоль столбика             
                  сад    | - Проверяем наличие кубиков в столбце             
                 }       |
ИНАЧЕ {                  |  Кубиков нет           
       ВЛЕВО             |  - Становимся слева от столбика с кубиками            
       путь              |  - Проверяем наличие кубиков в столбце
      }                  |              
КОНЕЦ                    |              
ЭТО путь                 | Проверяем наличие кубиков в столбце              
ВЛЕВО                    | Толкаем кубик             
ЕСЛИ НЕ ПУСТО ТО {       | Если кубик есть, то             
                  ВПРАВО | - Становимся справа от столбика с кубиками
                  ВВЕРХ  | - Делаем шаг вдоль столбика             
                  путь   | - Проверяем наличие кубиков в столбце            
                  ВНИЗ   | Рекурсивная пружина            
                 }       |              
ИНАЧЕ {                  | Кубика нет             
       ВВЕРХ             | - поднимаемся вверх            
       ПОВТОРИ 2 ВПРАВО  | - встаем над пкредвинутым в левый              
      }                  |   столбец кубиком                               
КОНЕЦ                    |              
ЭТО дерево               | Возврашаем кубики на места             
ПОВТОРИ 2 ВПРАВО         | Обходим с правой стороны левый            
ПОВТОРИ 2 ВНИЗ           | столбик             
поход                    | Ищем сдвинутые кубики
КОНЕЦ                    |              
ЭТО поход                | Поиск сдвинутых кубиков             
ВЛЕВО                    | Толкаем кубик
ЕСЛИ НЕ ПУСТО ТО {       | Если кубик есть, то             
                  ВПРАВО | - Становимся справа от столбика с кубиками             
                  ВНИЗ   | - Делаем шаг вдоль столбика             
                  поход  | - Проверяем наличие кубиков             
                 }       |              
ИНАЧЕ {                  | Кубика нет
       ПОВТОРИ 2 ВЛЕВО   | - Идем к правому столбцу             
       ВВЕРХ             | - Делаем шаг вдоль столбика            
       ход               | - Проверяем наличие кубиков            
       ВНИЗ              | - Рекурсивная пружина             
      }                  |              
КОНЕЦ                    |              
ЭТО ход                  | Проверяем наличие кубиков             
ВЛЕВО                    | Толкаем кубик             
ЕСЛИ НЕ ПУСТО ТО {       | Если кубик есть, то              
                  ВПРАВО | Становимся справа от столбика с кубиками             
                  ВВЕРХ  | Делаем шаг вдоль столбика               
                  ход    | Проверяем наличие кубиков             
                  ВНИЗ   | Рекурсивная пружина
                 }       |              
КОНЕЦ                                  

к о м м е н т а р и й  к у р а т о р а

Когда второй столбик выше или равен по высоте первому, программа не
работает.


Команда 3114
------------
.\14\14.txt
Оценка: 0
Решения нет

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

Оценка: 2.5
Автор решения 1571: Кудрявцев Артём

Описание алгоритма
     Исполнитель рекурсивно доходит до верхнего кубика
1 столба и откладывает процедуру Спусти_кирпич;
     Процедура Спусти_кирпич чинит 1 столбик и параллельно
спускает кирпич к основанию 2 столбца.
     Повторяя командой ПОКА процедуру Ищи_верх, исполнитель
доходит до верхнего кубика 2 столба и устанавлиивает кирпич на место. 
     Процедуру Поставь_2_столбик Кукарача повторяет, пока не
починит весь 2 столбик и затем становится в начальное положение.

Программа
 
//-------------------------------------
// Главная процедура
ЭТО Кирпич                             
  ВПРАВО                               
  ПОКА НЕ ПУСТО Посчитай_1_столбик     
  ВНИЗ                                 
  ВПРАВО                               
  ВВЕРХ                                
  ВПРАВО
  ПОВТОРИ 2 ВНИЗ                       
  ВЛЕВО                                
  ПОКА НЕ ПУСТО Спусти_кирпич          
  ПОВТОРИ 2 ВНИЗ                       
  ВПРАВО                               
  ПОВТОРИ 3 ВВЕРХ
  ВПРАВО                               
  ПОКА НЕ ПУСТО Ищи_верх               
  ПОВТОРИ 2 ВЛЕВО                      
  ВВЕРХ                                
  ВПРАВО                               
  ВВЕРХ                                
  ВПРАВО                               
  ВНИЗ                                 
  ПОВТОРИ 2 ВПРАВО                     
  ПОВТОРИ 2 ВНИЗ                       
  ВЛЕВО                                
  ПОКА НЕ ПУСТО Поставь_2_столбик      
  ПОВТОРИ 5 ВЛЕВО                      
  ВВЕРХ                                
КОНЕЦ // Кирпич                        
//-------------------------------------
// Доходит до верхнего кубика 1 столбца        
ЭТО Посчитай_1_столбик                 
  ВЛЕВО                                
  ВВЕРХ                                
  ВПРАВО                               
КОНЕЦ // Посчитай_1_столбик
//-------------------------------------
// Спускает кирпич и чинит 1 столбик   
ЭТО Спусти_кирпич                      
  ВПРАВО                               
  ВНИЗ                                 
  ВЛЕВО                                
КОНЕЦ // Спусти_кирпич                 
//-------------------------------------
// Доходит до верхнего кубика 2 столбца        
ЭТО Ищи_верх
  ВЛЕВО                                
  ВВЕРХ                                
  ВПРАВО                               
КОНЕЦ // Ищи_верх                      
//-------------------------------------
// Чинит 2 столбик
ЭТО Поставь_2_столбик                  
  ВПРАВО                               
  ВНИЗ                                 
  ВЛЕВО                                
КОНЕЦ // Поставь_2_столбик

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


Команда 3118
------------
.\18\18.txt
.\18\1871.coc
Автор решения: Зудилов Игорь

Оценка: 1

п р о г р а м м а
//-------------------------------------
ЭТО Кирпич                             
   {
   ВВЕРХ                               
   ВПРАВО                              
   ВЛЕВО                               
   }                                   
   ПОКА НЕ ПУСТО                       
   Кирпич                              
   Кирпич2                             
КОНЕЦ                                  
//-------------------------------------
ЭТО Кирпич2                            
  ВВЕРХ                                
  ВПРАВО
  ВЛЕВО                                
  ВВЕРХ                                
  ВПРАВО                               
  ЕСЛИ ПУСТО ТО Шаг5                   
    ИНАЧЕ Шаг4                         
КОНЕЦ // Кирпич2                       
//-------------------------------------
ЭТО Кирпич3                            
     ВНИЗ                              
     ВЛЕВО
     ВНИЗ                              
     ВЛЕВО                             
     ЕСЛИ 2 ТО Шаг2                    
       ИНАЧЕ Шаг3                      
КОНЕЦ // Кирпич3                       
//-------------------------------------
ЭТО Шаг3                               
  ВПРАВО
  ВВЕРХ                                
  ВПРАВО                               
  Кирпич3                              
КОНЕЦ // Шаг3
//-------------------------------------
ЭТО Шаг2                               
  ПОВТОРИ 2 ВНИЗ
  ПОВТОРИ 2 ВЛЕВО                      
  ВВЕРХ                                
КОНЕЦ // Шаг2                          
//-------------------------------------
ЭТО Шаг4                               
  ВЛЕВО                                
  ВВЕРХ
  ВПРАВО                               
  ЕСЛИ ПУСТО ТО Шаг5                   
    ИНАЧЕ Шаг4                         
КОНЕЦ // Шаг4                          
//-------------------------------------
ЭТО Шаг5                               
   ВНИЗ                                
   ПОВТОРИ 2 ВПРАВО
   ВВЕРХ                               
   ВПРАВО                              
   Кирпич3                             
КОНЕЦ // Шаг5                          

к о м м е н т а р и й  к у р а т о р а

Программа работает неправильно, если в первом столбике только однин
кирпич, если во втором столбике больше одного кирпича.
