
Общее впечатление  куратора о работе очень приятное.

Руслан и Алексей большие молодцы!
Ребята уверенно применяют все основные алгоритмы 
(ветвление, циклы и рекурсию), осознанно структурируют программы,
очень толково комментируют их. 


Задача 1 "Елка" (3 балла)

Решена двумя способами:
1- с использованием цикла "ПОКА" (файл 0311.coc)
2- рекурсия (0312.coc)
Оба решения универсальны для любой ситуации (елка может быть любой высоты)

О ц е н к а  к у р а т о р а - 2.5  (по лучшему 1-му варианту)
К о м м е н т а р и й:
Решение верное, но частное в смысле символов * на кубиках.
Условие допускает любые кубики.
Описание алгоритма неполное.
Оформление - в первом варианте без замечаний,
во втором лишний структурный сдвиг:

ЭТО Вход                               
    ВПРАВО                             
       ЕСЛИ * ТО   - эта команда 
          {          по смыслу должна быть
           ВВЕРХ     на одном уровне
           Вход      с предыдущей
          }           
                    
КОНЕЦ                            

Рекурсия здесь моделирует цикл "ПОКА", более оправданный
для данной задачи.      


Задача 2. "Точка" (4 балла) (0321.coc)

В процессе решения задачи лавры первенства принадлежали Мавлеткулову
Руслану, Фролову Алексею. Алгоритм решения задачивключает в себя
организацию поиска символа точки в строке, возврат исполнителя на
начало строки для "уплотнения" строки (на освободившуюся от точки
клеточку), а затем продвижение исполнителя в конец строки для
установки точки. Использованы циклы ПОКА в качестве основного приема.

О ц е н к а  к у р а т о р а - 4.0
К о м м е н т а р и й:
Решение верное, цикл применён грамотно.
Описание алгоритма понятное.
Комментарии очень толковые.
Оформление - мелкие погрешности, например:

ЭТО Вход                               
    ВВЕРХ     // Проверка на наличие   
    ВПРАВО    // символа "." в строке  
    ВНИЗ                               
     ПОКА НЕ .   <--- неоправданный сдвиг                      
       {                               
        ВВЕРХ    
        ВПРАВО   <--- эти строки     
        ВНИЗ          лучше поместить                 
       }              под ПОКА                 

Пожелание:
Программа выглядела бы ещё понятней, если бы были
выделены в отдельные процедуры очевидные "Шаги"
исполнителя и сдвиги, сравните:

ЭТО Вход                               
    Шаг        
    ПОКА НЕ . Шаг                     
    Сдвиг_точки                                                      
    ПОКА НЕ ПУСТО  Шаг2              
    Уплотнение
    ПОКА НЕ ПУСТО  Шаг2                    
    Вставка
КОНЕЦ                  



Задача 3 "Сортировка" (6 баллов).
Эту задачу не удалось решить до конца ни одному из участников команды. 

Задача 4 "Распилить по метке" (4 балла) (0341.coc)

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

О ц е н к а  к у р а т о р а - 6.0
К о м м е н т а р и й:
Решение верное. Для поиска конца "бревна" логичнее было бы применить
цикл ПОКА вместо рекурсии, т.к. длину правой части "бревна"
запоминать не требуется.
Замечание: для метки использован другой символ.

Описание алгоритма понятное.
Комментарии очень толковые.

Погрешности оформления :
ветви ТО и ИНАЧЕ равноправны, должны быть на одном уровне


Задача 5. "Разделать на дрова" (6 баллов) 0351.coc)

Решение данной задачи, как самому опытному в распилке бревен на части
"длиной" по 2 кубика и уложить в "поленницу" одно над другим, удалось
Мавлеткулову Руслану, благодаря освоенному им способу - рекурсия. Что
позволило организовать сдвиг кубиков, начиная с третьего на строку
выше, последовательный поиск конца оставшегося бревна, сдвиг его влево
на размер отпиливаемого участка (2 кубика), переход на следующий этап
распила с одновременным выравниванием отпиленных бревнышек по левому
краю.

О ц е н к а  к у р а т о р а - 6.0  
К о м м е н т а р и й:
Решение верное, но не самое оптимальное.
Есть лишние движений исполнителя:
1) Кукарача заканчивает  работу не тогда, когда кончилось
 "бревно", а когда сам окажется выше поленницы.
2) Поправку положения исполнителя перед срабатыванием "пружинки"
   можно сократить или убрать вовсе, если отложенную команду
   перенести в ветвь ТО (с соотв. изменениями в ветви ИНАЧЕ):

    ЕСЛИ НЕ ПУСТО ТО    //символов "=" 
        { ВНИЗ                         
          ВПРАВО                       
          Поиск_конца_строки           
                         // Рекурсивный
                         // возврат    
          ВЛЕВО   // Накопление необходимого 
                  // количества команд для   
                  // выравнивания рядов ку-  
                  // биков по левому краю    

        }                              
       ИНАЧЕ { ВВЕРХ    // Сдвигаем    
               ВЛЕВО    // оставшееся  
               ВЛЕВО    // бревно пос- 
      .......................

Описание алгоритма не очень чёткое.
Код программы читается легко благодаря толковым комментариям.
К оформлению - те же замечания, что к задаче 4.


Задача 6 "Распилить натрое " (8 баллов)
"На трое" не удалось никому.


Задача 7. "Кукарача - перевозчик" (8 баллов)

С перевозом все более или менее благополучно. Все ресонажи перевезены
с разной степенью учпешности. На конкурс представлены два варианта
решения: Мавлеткулова Руслана (0371.coc) и Фролова Алексея (0372.coc).
Решение Мавлеткулова Руслана отличает глубокая "универсальность" (на
мой взгляд даже излишняя. Но может быть я ошибаюсь?) Решение Фролова
Алексея не слишком гибкое, но удовлетворяет всем возможным вариантам.
Он учел в своем решении очень важный, на мой взгляд, факт, что не
важно, какой из персонажей будет переправлен во вторую очередь - волк
или капуста.

О ц е н к а  к у р а т о р а - 8.0 + бонус 2.0 = 10.0
(по лучшему варианту Алексея Фролова)
К о м м е н т а р и й:
Оба решения верные. Ребята молодцы!
Несомненно, оптимальнее решение Алексея, который вырвался из плена
"универсальности", что не  удалось ни автору задачи, ни Руслану.
Задачка оказалась на чистое ветвление, и Алексей великолепно
это увидел!

К решению Алексея только два маленьких замечания: 
1) не очень удачные имена процедур. Я бы посоветовал:
"Коза внизу", "Коза в середине", "Коза сверху".
2) неоправданные структурные сдвиги

Описания алгоритма нет, наверное, потому,что алгоритм прост,
как всё гениальное :-).
Комментарии очень толковые.


Задача 8. ( 6 баллов ) (0381.coc)
Эту задачу решил только Мавлеткулов Руслан.

О ц е н к а  к у р а т о р а - 4.0
К о м м е н т а р и й:
Главная идея решения верная, но содержит ошибку, не позволяющую
переставить кубики в соседних клетках. В остальных случаях программа
работает верно, но неоптимально: третий проход исполнителя можно
сделать короче, а лучше вообще исключить. Найдя правый кубик,
следовало бы сразу установить на его место левый, а затем
"разобраться" с установкой правого кубика на место.

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

Погрешности оформления : неудачное имя процедуры
"Поиск_числа", запись ветвления.


Задача 9. "Треугольник"( 9 баллов )
Автор решения Мавлеткулов Руслан. (0391.coc)

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

О ц е н к а  к у р а т о р а - 8.0
К о м м е н т а р и й:
Руслан уверенно, просто виртуозно применяет рекурсию и цикл ПОКА,
не смущаясь объёмом работы. Молодец! Идея решения основана на 
решении предыдущей задачи и этим симпатична.       

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

К сожалению, программа неверно обрабатывает ситуацию
   А   В
       С

Описание алгоритма не объясняет идею решения.

Погрешности оформления : неоправданные структурные сдвиги.


Задача а "Проще некуда" (10 баллов, автор Катя
(03a1.coc)

Ее название как насмешка над содержанием. Нам не удалось добиться
полного решения. Если кого-то устроит, так МИавлеткулов Руслан только
сумел поставить букву на место Кукарачи, но ему так и не удалось
вернуть Кукарачу на место буквы . 


О ц е н к а  к у р а т о р а - 2.0
К о м м е н т а р и й: 

Вроде бы полдела сделано :-), но вторая
половина- вернуть Кукарачу на место кубка- конечно, стОит дороже!


Задача b. Проверка записи (8 баллов, Автор А.А.Дуванов) (03b1.coc) 

Проверка записи удалась Мавлеткулову
Руслану. Сочетание цикла ПОКА и, при необходимости, рекурсии,
позволило организуя поиск участка повторяющихся единиц в строке, если
их оказывается три и более, организовать возврат Кукарачи на начало
этого участка.

О ц е н к а  к у р а т о р а - 2.0
К о м м е н т а р и й: 

Решение неверное. Опровергающие тесты:

000
11001 и многие другие.

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

Очевидные огрехи:

1)Две или более конструкции ветвления, записанные друг за другом:

    ЕСЛИ 1 ТО    // При наличи "1"     
         {       // необходимо перейти 
          ВНИЗ   // к проверке следую- 
          ВПРАВО // щего символа       
          ВВЕРХ  // в строке           
         }                             
     ЕСЛИ НЕ 1 ТО // наличие двух      
         {       // единиц не нарушает 
          ВНИЗ   // порядка в строке   
          ВПРАВО                       
          ВВЕРХ                        
            ЕСЛИ 1 ТО Плохо            

Ведь условия "1" и "НЕ 1" взаимоисключающие! Тут обязательно 
употребление "ИНАЧЕ".

2)Конструкцию с вложенными командами ПОКА чрезвычайно трудно
  осознать, несмотря на комментарии:

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

А внутри этого хитросплетения- ещё и отложенная процедура!
Сколько раз она сработает, я думаю, неизвестно даже Руслану.

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

ЭТО Вход                               
  Шаг                                  
  ЕСЛИ       0     ТО Вход             
  ИНАЧЕ ЕСЛИ 1     ТО Одна_единица     
  ИНАЧЕ ЕСЛИ ПУСТО ТО Запись_верна     
  ИНАЧЕ               Ошибка           
КОНЕЦ                                  
                                       
ЭТО Одна_единица                       
  Шаг                                  
  ЕСЛИ 0           ТО Вход             
  ИНАЧЕ ЕСЛИ 1     ТО Две_единицы      
  ИНАЧЕ ЕСЛИ ПУСТО ТО Запись_верна     
  ИНАЧЕ            Ошибка              
КОНЕЦ                                  
                                       
ЭТО Две_единицы                        
 Шаг                                   
 ЕСЛИ 0           ТО Вход              
 ИНАЧЕ ЕСЛИ ПУСТО ТО Запись_верна      
 ИНАЧЕ               Ошибка            
КОНЕЦ                                  
                                       
ЭТО Запись_верна                       
 ВВЕРХ                                 
КОНЕЦ                                  
                                       
ЭТО Ошибка                             
 Шаг                                   
 ЕСЛИ НЕ ПУСТО ТО Ошибка               
 ВЛЕВО                                 
КОНЕЦ                                  
                                       
ЭТО Шаг                                
 ВНИЗ ВПРАВО ВВЕРХ                     
КОНЕЦ                            
