Задача 5 (4 балла)
--------
Первый член последовательности представляет собой непустую
последовательность нулей и единиц. Каждый следующий член получается
приписыванием слева и справа к записи по одному знаку. Слева
приписывается первый инвертированный знак, а справа последний
инвертированный знак предыдущего члена.

a  = 110 (например)
 1
a  = 01101
 2
a  = 1011010
 3
...

Построить n-й член последовательности, если n кодируется порядковым
номером символа, который Корректор видит в начальный момент в своем
окошке. Считать, что символ "1" кодирует n=1, и в начальный момент на
ленте не могут быть записаны символы с меньшим порядковым номером.
Сразу справа от n на ленте записан первый член последовательности.

Пример работы программы:

Начальное состояние            После работы программы
┬─┬─╦═╦─┬─┬─┬─┬─┬─┬─┬─┬        ┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬
│░│░║2║1│0│1│░│░│░│░│░│  ─>    │░│░│0│1│0│1│0│░│░│░│░│
┴─┴─╩═╩─┴─┴─┴─┴─┴─┴─┴─┴        ┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴


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

Команда 3104
------------
.\04\04.txt
Оценка: 4
Автор: Бельков Игорь

Решение. Номер члена последовательности используется
в качестве счетчика цикла.Хранится в ящике. С каждым
проходом уменьшается на единицу.                             
                                       
ЭТО вход                               
 ПОКА НЕ 1                             
  {
   //Номер члена последовательности    
   // в ящик
   ОБМЕН                               
   запись_справа                       
   запись_слева                        
   ВЛЕВО                               
   ОБМЕН                               
   МИНУС                               
  }                                    
 ПИШИ ПУСТО                            
КОНЕЦ                                  
//-------------------------------------
// Процедура приписывает цифру справа  
// и возвращает окно на начало
                                       
ЭТО запись_справа                      
ВПРАВО                                 
 ЕСЛИ НЕ ПУСТО                         
  ТО    запись_справа                  
  ИНАЧЕ                                
   {                                   
    ВЛЕВО
    ЕСЛИ 1                             
      ТО                               
        {                              
         ВПРАВО                        
         ПИШИ 0                        
        }
      ИНАЧЕ                            
        {                              
         ВПРАВО                        
         ПИШИ 1                        
        }                              
   }
ВЛЕВО                                  
КОНЕЦ
//-------------------------------------
                                       
// Процедура приписывает цифру слева   
                                       
ЭТО запись_слева                       
ВПРАВО                                 
 ЕСЛИ 1                                
  ТО
    {                                  
     ВЛЕВО                             
     ПИШИ 0                            
    }                                  
  ИНАЧЕ                                
    {
     ВЛЕВО                             
     ПИШИ 1
    }                                  
КОНЕЦ                                  

к о м м е н т а р и й  к у р а т о р а
Решение правильное. Замечаний нет.

Команда 3106
------------
.\06\06.txt
Оценка: 4
Автор решения:Лавыгин Сергей

Алгоритм
--------
Идея: Поместить номер элемента в ЯЩИК.Т.к. первый элемент задан,
вычесть 1 и затем уменьшать счетчик на 1 при записи очередного
элемента.Счетчик храним справа от первого символа через одну
клетку, т.к. в свободную будет дописана цифра.Затем идем в конец
записи элемента последовательности, инвертируем последнюю цифру и
помещаем в конец записи. Идем в начало записи члена последовательности,
инвертируем и дописываем цифру в начале в клетку между счетчиком и
левым краем члена последовательности.Сместившись ВЛЕВО,придем к
исходной точке задачи.Процесс повторяем, пока счетчик не покажет 1.

ЭТО Вход
   ЕСЛИ НЕ 1 ТО   //Если номер искомрго члена последовательности не 1
      {
         МИНУС    //уменьшаем содержимое ЯЩИКа на 1
         ОБМЕН
         ВЛЕВО
         ОБМЕН   //Записываем уменьшенный номер слева от записи
         ПОВТОРИ 2  ВПРАВО   //На начало записи
         Шаг_1
          }
         ИНАЧЕ
         ПИШИ ПУСТО

КОНЕЦ

ЭТО Шаг_1
ПОКА НЕ ПУСТО
      {         //находим первую пустую клетку после записи
        ВПРАВО
       }
  ВЛЕВО   //стали на последнюю цифру
  Инверсия
  ВПРАВО
  ОБМЕН
  Шаг_2
КОНЕЦ

ЭТО Инверсия
  ЕСЛИ 1 ТО
      {
       ОБМЕН
       ПИШИ 0
          }
         ИНАЧЕ
          {
           ОБМЕН
           ПИШИ 1
              }
   ОБМЕН
КОНЕЦ

ЭТО Шаг_2       //Ищем первую пустую клетку слева от записи
  ПОКА НЕ ПУСТО
      {
        ВЛЕВО
         }
    ВПРАВО  //Встали на первую цифру в записи
    Инверсия
    ВЛЕВО
    ОБМЕН
    ВЛЕВО
    Вход
КОНЕЦ

к о м м е н т а р и й  к у р а т о р а
Решение правильное. Легкое прежнее замечание по поводу работы с
ящиком.

Команда 3107
------------
.\07\07.txt
.\07\tur5.kor
Оценка: 4

// Авторы решения: Гусева М. и
// Васильева М.                        
//                                     
ЭТО вход                               
// Алгоритм: счетчик храним в ящике    
// (чтобы не мешал). Поочередно        
// находим начало и конец записи и     
// дописываем инверированные символы   
// после проверки первого и последнего 
// символов
МИНУС   // уменьшаем счетчик на 1      
ПОКА НЕ 0 работа                       
ОБМЕН   // восстановление символа на   
        // ленте
КОНЕЦ                                  
                                       
//-------------------------------------
// Программа генерации очередного      
// члена последовательности            
ЭТО работа                             
 ОБМЕН      // перенос сч. в ящик      
 ВПРАВО     // встали на 1-ю цифру     
 ЕСЛИ 1 ТО                             
   {                                   
   ВЛЕВО      //приписываем цифру слева
   ПИШИ 0                              
   }                                   
 ИНАЧЕ                                 
   {                                   
   ВЛЕВО                               
   ПИШИ 1                              
   }
ПОКА НЕ ПУСТО                          
 ВПРАВО   // находим конец записи      
 ВЛЕВО    // на последнюю цифру        
 ЕСЛИ 1
  ТО                                   
    {                                  
    ВПРАВО ПИШИ 0                      
    }                                  
 ИНАЧЕ                                 
    {                                  
    ВПРАВО ПИШИ 1                      
     }                                 
 ПОКА НЕ ПУСТО ВЛЕВО // в начало       
                     // записи         
ОБМЕН              // счетчик на ленту 
МИНУС              // -1 от счетчика   
                                       
КОНЕЦ                                  
                                       
к о м м е н т а р и й  к у р а т о р а
Решение правильное. Замечаний нет.

Команда 3108
------------
.\08\08.txt
Оценка: 2.5
Автор решения: Сухаренко Маша

Описание алгоритма: имеется счетчик циклов. В каждом цикле содержимое
счетчика уменьшается и сравнивается с 1. Пока счетчик не 1, выполняются
следующие действия: анализируется содержимое первой цифры числа.
Если она 0, то слева приписывается 1, в противном случае - 0.
Анализируется последняя цифра числа, если она 1, то справа приписывается 0,
Уменьшаем счетчик.

ЭТО вход
Подготовка
Работа
Уборка
КОНЕЦ
ЭТО Подготовка //В ящик поместить
//значение номера члена послед-ти
ЯЩИК+
ПИШИ ПУСТО
КОНЕЦ
ЭТО Работа            //Проверка
ВПРАВО                //первой цифры
ЕСЛИ НЕ ПУСТО ТО      //члена посл-ти
{                     //учитывается,
ЕСЛИ 1 ТО      //что член посл-ти м.б.
 {             //пустым
 ВЛЕВО ПИШИ 0
  }
ИНАЧЕ
  {
 ВЛЕВО ПИШИ 1
  }
ПОКА НЕ ПУСТО ВПРАВО   //перейти к
ВЛЕВО        //последней цифре данного
ЕСЛИ 1 ТО    //члена послед-ти и
{            //проверить ее
 ВПРАВО
 ПИШИ 0
}
ИНАЧЕ
{
ВПРАВО
ПИШИ 1
}
}
ПОКА НЕ ПУСТО ВЛЕВО  //идти к первой
Счетчик              //цифре в записи,
КОНЕЦ                //проверить сч-к
ЭТО Счетчик          //Проверка сч-ка
ОБМЕН
МИНУС
ЕСЛИ НЕ 1 ТО
{
 ОБМЕН
 Работа
}
КОНЕЦ
ЭТО Уборка
ПИШИ ПУСТО
КОНЕЦ

к о м м е н т а р и й  к у р а т о р а
Программа работает неверно:

Для 11 выдает сообщение НЕ МОГУ (надо 1)
Для 111 выдает сообщение НЕ МОГУ (надо 11)
...

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

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

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

Команда 3115
------------
.\15\15.txt
Оценка: 4
Автор решения - ученик 7а класса Лысяк Павел.
Описание алгоритма:
Запускаем главную процедуру, в ней -
если не 1, то запускаем процедуру Работа, иначе стираем единицу
и заканчиваем выполнение.
В процедуре "Работа" мы вычитаем 1, и проверяем -
если не 1, то опять рекурсивно запускаем процедуру "Работа".
Иначе пишем пустоту и выполняем отложенную процедуру Допиши
соответствующее количество раз. 
В ней - сначала двигаемся на начало записи, проверяем:
если 1, то дописываем слева 0, иначе дописываем 1. 
Передвигаем окошко на конец записи, и
опять проверяем - если 1, значит дописываем справа 0, иначе 1.
Устанавливаем окно перед началом записи, т.е. в исходное
положение для дописывания следующих двух знаков.

Программа

ЭТО Вход
  ЕСЛИ НЕ 1
   ТО Работа
   ИНАЧЕ ПИШИ ПУСТО
КОНЕЦ

ЭТО Работа
  МИНУС
  ЕСЛИ НЕ 1
   ТО Работа
   ИНАЧЕ ПИШИ ПУСТО
  Допиши
КОНЕЦ

ЭТО Допиши
  ВПРАВО
  ЕСЛИ 1
   ТО    {
          ВЛЕВО
          ПИШИ 0
         }
   ИНАЧЕ {
           ВЛЕВО
           ПИШИ 1
         }
  ПОКА НЕ ПУСТО ВПРАВО  //В конец записи
  ВЛЕВО
  ЕСЛИ 1
   ТО {
        ВПРАВО
        ПИШИ 0
      }
   ИНАЧЕ  {
            ВПРАВО
            ПИШИ 1
          }
  ПОКА НЕ ПУСТО ВЛЕВО  //В начало записи
КОНЕЦ

к о м м е н т а р и й  к у р а т о р а
Программа хорошая, но объяснения ее работы -- очень плохое:

"Запускаем", "стираем", "пишем", "заканчиваем".

Это и так видно из программы. Не объясняется "зачем".
