Задача 7 (7 баллов) НОД двух чисел.
--------
Написать программу для вычисления наибольшого общего делителя двух
чисел. Полагать, что числа по величине меньше длины алфавита
Корректора.

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

Алгоритм Евклида в решении куратора записан так:

А л г о р и т м нахождения НОД(a,b)
---------------
ПОКА a не равно b
{
  если a=b то НОД=а
  если a<b то переставим числа местами
  a=a-b
}
НОД=a

Что произойдет, если одно из чисел a или b равно нулю?
Пусть b=0, a>0

Проверка "a не равно 0" даст истину.

Первый оборот цикла:                    │
{                                       │
  если a=0 то НОД=а                     │не работает
  если a<0 то переставим числа местами  │не работает
  a=a-b                                 │a=a
}                                       │

Далее все повторяется вновь. Видно, что алгоритм зацикливается.
Зацикливание происходит и при a=0, b>0.

При a=b=0 в ответе получается ноль.

Это говорит о том, что эти случаи надо было запрограммировать
отдельно. Такая проверка предусмотрена только в решении команды 3115,
у других же команд и у куратора она отсутствует, что, конечно,
неправильно.

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

Команда 3106
------------
.\06\06.txt
Оценка:6
Автор алгоритма:Кузнецова Г.В.
Реализация: Лавыгин Сергей
Ганиев Женя

Алгоритм
--------
Идея: Впереди этих двух чисел написать 0. В образовавшейся тройке
чисел вычитаем по 1, а к крайнему правому -прибавляем по 1 до тех пор,
пока одно из чисел не станет равным нулю.Этот ноль убираем, пишем новый
ноль слева и все повторяем сначала.В итоге из трех чисел два станут
равными нулю, а  третье и будет наибольшим общим делителем.

ЭТО Вход
  ВЛЕВО
  ПИШИ 0
  Установка_счетчика
КОНЕЦ

ЭТО Установка_счетчика
  ОБМЕН
  ПИШИ 0       //Для подсчета нулей
  ОБМЕН
  Начало
КОНЕЦ

ЭТО Начало
 ВПРАВО
   Конец_числа_слева
 ПОВТОРИ 2
  {
   Начало_числа_слева
   ЕСЛИ 0 ТО Счет
   Конец_числа_слева
  }
ВПРАВО
Анализ
КОНЕЦ

ЭТО Анализ
 ВЛЕВО
 ОБМЕН
 ЕСЛИ 0 ТО
       {
           ПИШИ ПУСТО
           Работа
           ВЛЕВО
           Установка_счетчика
               }
           ИНАЧЕ
             ЕСЛИ 1 ТО
                 {
                  ПИШИ ПУСТО
                  Удалить_нули
                  ВЛЕВО
                  Вход
                }
               ИНАЧЕ
                 ЕСЛИ 2 ТО
                      {
                       ПИШИ ПУСТО
                    Удалить_нули
                                 }
КОНЕЦ

ЭТО Работа
ПОВТОРИ 2
  {
 Конец_числа_справа
 Минус
 Начало_числа_справа
    }
 Конец_числа_справа
 Плюс
КОНЕЦ

ЭТО Удалить_нули
 ПОВТОРИ 2
   {
    Конец_числа_справа
//  ЕСЛИ 0 ТО ПИШИ ПУСТО
    Начало_числа_справа
   ВПРАВО
   ЕСЛИ 0 ТО
        ПИШИ ПУСТО
           ИНАЧЕ
            ВЛЕВО
       }
    Конец_числа_справа
    ВЛЕВО
КОНЕЦ

ЭТО Плюс
 ЕСЛИ НЕ 9 ТО
    ПЛЮС
      ИНАЧЕ
        {
         ПИШИ 0
         ВЛЕВО
         ЕСЛИ ПУСТО ТО
              ПИШИ 1
                ИНАЧЕ
                  Плюс
          }
КОНЕЦ

ЭТО Минус

ЕСЛИ НЕ 0 ТО
   МИНУС
     ИНАЧЕ
        {
         ПИШИ 9
         ВЛЕВО
         ЕСЛИ НЕ ПУСТО ТО
              Минус
             }
 ЕСЛИ 0 ТО
  {
   ВЛЕВО
    ЕСЛИ ПУСТО ТО
       {
         ПОВТОРИ 2 ВПРАВО
             ЕСЛИ ПУСТО ТО
                 ВЛЕВО
                   ИНАЧЕ
                    {
                     ВЛЕВО
                     ПИШИ ПУСТО
                      }
           }
}
КОНЕЦ

к о м м е н т а р и й  к у р а т о р а
Ваш алгоритм является модификацией алгоритма Евклида, который
приводится в описании Б.А.Трахтенброта.
Замечание по решению: неверная обработка нулевых значений чисел.

Команда 3107
------------
.\07\07.txt
.\07\tur7.kor
Оценка: 6
// НОД двух чисел
// Алгоритм нахождения НОД - Евклида   
// в изложении Трахтенборта.           
// Оба числа имеют не более 2 знаков
// Авторы решения: Майоров В.,
// Егоров В.
//                                     
ЭТО вход                               
числа_символы // преобразование чисел
     // в символы алфавита Корректора
работа  // выполнение алгоритма        
запись_ответа
КОНЕЦ                                  
//-------------------------------------
// Числа на ленте, соединеннные знаком 
// "-", преобразуются в символы        
// Корректора                          
//                                     
ЭТО числа_символы
 ВЛЕВО         // в конец первого      
               // числа                
 число_символ1  // преобразование 1-го 
               // числа                
 ПОКА НЕ ПУСТО ВПРАВО  // в конец 2-го 
 ВЛЕВО                 // числа        
 число_символ2   // преобразование 2-го
КОНЕЦ           // числа
//-------------------------------------
// Программа перевода числа в символ   
// Различие программ для первого и     
// второго чисел обусловлено различием
// их окружения                        
//                                     
ЭТО число_символ1
 ПОКА НЕ ПУСТО  // Установка окна      
 ВЛЕВО          // на первый символ
 ВПРАВО         // первого числа       
 ОБМЕН          // Вызов счетчика      
 ПИШИ 0         // Обнуление           
 ОБМЕН          // счетчика -> в ящик  
 ПОКА НЕ 0      // Пока 1-е число не
   {            // равно нулю          
   ПОКА НЕ -    // Становимся на       
   ВПРАВО       // последнюю цифру     
   ВЛЕВО        // числа               
   минус1       // вычитаем единицу    
   символ+1     // увеличиваем символ  
   }
 ЯЩИК-          // записываем символ
                // вместо числа
КОНЕЦ                                  
//-------------------------------------
//-------------------------------------
// Преобразование второго числа        
// В исходном состоянии окно находится 
// в конце число
//                                     
ЭТО число_символ2
 ПОКА НЕ - ВЛЕВО  // Становимся на     
 ВПРАВО           // начало числа      
 ОБМЕН            // Вызов и
 ПИШИ 0           // обнуление         
 ОБМЕН            // счетчика
 ПОКА НЕ 0                             
  {                                    
  ПОКА НЕ ПУСТО   // Становимся на     
  ВПРАВО          // последнюю цифру   
  ВЛЕВО           // 2-го числа        
  минус1          // Вычитаем 1        
  символ+2        // Увеличиваем
                  // символ на 1
  }
 ЯЩИК-        // Записываем символ     
              // вместо числа          
КОНЕЦ
                                       
// Программа вычитания единицы         
// из числа использована как
// стандартная  программа из курса     
ЭТО минус1
 работа1                               
 проверка1                             
КОНЕЦ
//-------------------------------------
// Вычитание единицы
ЭТО работа1                            
 ЕСЛИ 0                                
  ТО                                   
   {                                   
   ПИШИ 9                              
   ВЛЕВО                               
   работа1
   }
  ИНАЧЕ МИНУС  // окно на первой цифре
КОНЕЦ                                  
//-------------------------------------
// Проверка первого нуля
// И.П. окно на первой цифре           
ЭТО проверка1                          
 ЕСЛИ 0    // Проверка на ноль
  ТО       // первой цифры             
   {
   ВЛЕВО                               
 ЕСЛИ НЕ ЦИФРА    // Проверка наличия  
  ТО              // цифры слева
   {                                   
 ПОВТОРИ 2 ВПРАВО  // Проверка наличия
 ЕСЛИ ЦИФРА        // цифры справа     
  ТО                                   
    {                                  
   ВЛЕВО           // Стираем незнача- 
   ПИШИ ПУСТО      // щий ноль         
    }                                  
   }
  }
КОНЕЦ
//-------------------------------------
//                                     
// Программа увеличения символа
// замены первого числа                
//                                     
ЭТО символ+1
 ОБМЕН        // Увеличение            
 ПЛЮС         // символа в ящике
 ОБМЕН        // на единицу            
 ПОКА НЕ ПУСТО                         
  ВЛЕВО        // Установка на
 ВПРАВО        // первую цифру числа   
КОНЕЦ
//-------------------------------------
// Программа увеличения символа        
// замены второго числа                
//                                     
ЭТО символ+2                           
 ОБМЕН                                 
 ПЛЮС
 ОБМЕН
 ПОКА НЕ -
 ВЛЕВО         // Установка на         
 ВПРАВО        // первую цифру         
 ЕСЛИ ПУСТО
  ТО                                   
   {                                   
   ВПРАВО      // Сдвиг второй цифры
   ОБМЕН       // числа на шаг         
   ВЛЕВО       // влево ( к "-")
   ОБМЕН       // если первая цифра    
   ВПРАВО      // стала нулем и была   
   ОБМЕН       // заменена на ПУСТО
   ВЛЕВО       // программой минус1    
   }
КОНЕЦ                                  
//-----------------------------------  
// Нахождение НОД в символьной форме   
// И.П. окно на втором символе,        
// в ящике - тоже второй символ        
ЭТО работа                             
 ПОВТОРИ 2 ВЛЕВО  // встаем на первый
                  // символ
 ЕСЛИ Я>Л ТО      // второй больше?
   {                                   
   обмен1         // меняем символы    
                  // местами
   работа         // рекурсия          
   }                                   
 ИНАЧЕ
  ЕСЛИ Я<Л        // первый больше?    
   ТО
     {                                 
     разность   // находим их разность 
                // и замещаем уменьша-
                // емое остатком       
     работа     // рекурсия
  }                                    
КОНЕЦ       // когда числа будут равны 
//-------------------------------------
// Определение разностного символа     
// И.П. окно на первом символе         
ЭТО разность                           
 ОБМЕН            // Обнуление
 ПИШИ 0           // счетчика
 ОБМЕН            // в ящике
 ПОВТОРИ 2 ВПРАВО // Встаем на второй  
                  // символ            
 ПОКА НЕ 0
   {                                   
   МИНУС           // -1 от второго с. 
   ПОВТОРИ 2 ВЛЕВО // На первый символ
   МИНУС           // -1 от первого с. 
   ОБМЕН           // Вызов счетчика
   ПЛЮС            // +1 к разности    
   ОБМЕН           // Счетчик -> ящик  
   ПОВТОРИ 2 ВПРАВО // На второй
                    // символ          
   }                // конец ПОКА
 ЯЩИК-     // Записываем разность на   
           // место второго символа    
КОНЕЦ    // в ящике - второй символ    
         // окно - на втором символе   
//-------------------------------------
// Изменение порядка символов          
// И.П. окно на первом символе,
// в ящике второй символ
ЭТО обмен1
  ОБМЕН    // 1-й символ в ящик        
           // 2-й - на ленту           
  ПОВТОРИ 2 ВПРАВО   // на 2-й символ
  ЯЩИК-          // 1-й символ на      
                 // место 2-го         
КОНЕЦ  // окно на 2-м симв., в ящике
       // 2-й символ                   
//-------------------------------------
//  Прибавить единицу к числу.         
// Стандартная программа из курса      
// Корректора (без комментариев)
//                                     
ЭТО плюс1
 ЕСЛИ НЕ 9                             
  ТО                                   
    {                                  
    ЕСЛИ ПУСТО                         
     ТО                                
       ПИШИ 1                          
     ИНАЧЕ
       ПЛЮС
    }
  ИНАЧЕ                                
    {                                  
    ПИШИ 0
    ВЛЕВО                              
    плюс1                              
     }
КОНЕЦ                                  
//-------------------------------------
// Программа записи ответа на ленте    
ЭТО запись_ответа                      
 ПИШИ н      //  Пишем
 ВПРАВО      //  на                    
 ПИШИ о      //  ленте
 ВПРАВО      //  слово                 
 ПИШИ д      //  "нод="                
 ВПРАВО      //                        
 ПИШИ =      //                        
 ПОВТОРИ 2 ВПРАВО // резерв для 2 цифр 
 ПИШИ 0      // записываем ноль        
 ОБМЕН       // Вызов символа НОД      
 ПОКА НЕ 0
   {
   МИНУС      // Уменьшение символа    
   ОБМЕН      // на 1 и обмен          
   ПОКА НЕ ПУСТО // Установливаем
   ВПРАВО        // окно на последн.   
   ВЛЕВО         // цифру рез-та       
   плюс1      // +1 к числу
   ОБМЕН      // вызов символа         
   }          // конец ПОКА
 ОБМЕН        // восстановление числа  
              // на ленте              
КОНЕЦ
//-------------------------------------
// описание
ЭТО проверка                           
  ВПРАВО                               
 ЕСЛИ ПУСТО                            
  ТО    ВЛЕВО                          
   ЯЩИК+                               
ВПРАВО                                 
 ЯЩИК-                                 

КОНЕЦ

к о м м е н т а р и й  к у р а т о р а
Замечание по решению: неверная обработка нулевых значений чисел.


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

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

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

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

12и30 преобразует в 1 (должно быть 6)
9и6  выдает сообщение "Не могу"


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

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

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

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


Решение 1571
Оценка:7
Автор решения Гуреев Денис
Описание алгоритма:

 Сначала проверяется равно ли какое-нибудь число 0. Если да, то исполнитель 
 смотрит, чему же равно другое число. Если оно также равно 0, то на ленте
 выдается надпись, что НОД не определен, а если нет, то выдается надпись, 
 что НОД равен другому числу.
 Далее я решал задачу по алгоритму Евклида (пока числа не станут равными я 
 вычитал из большего числа меньшее, затем вычислял остаток, после этого всё
 повторялось, но уже с меньшим числом и остатком).

Программа, описание программы:

//-------------------------------------
ЭТО Вход                               
 ЯЩИК+
 ЕСЛИ 0                           -----
  ТО {                                 |
      ВПРАВО                           |
      ЕСЛИ НЕ 0                        |
       ТО                              |
        {                              |
         ЯЩИК+                         |  Проверяем, есть ли 0
         Пиши_ответ                    |
        }                              |
      ИНАЧЕ Действие_с_нулями          |
     }                                 |
 ИНАЧЕ {                               |
        ВПРАВО                         |
        ЕСЛИ 0                         |
         ТО Пиши_ответ            -----    
         ИНАЧЕ Сравни_числа             // Если 0 нет, идем в
                                // процедуру "Сравни_числа"
       }                               
КОНЕЦ // Вход
//-------------------------------------
ЭТО Сравни_числа                       
 ПОКА Я#Л {
           ЕСЛИ Я<Л
            ТО {
                Вычитай
                ВЛЕВО
               }                       
            ИНАЧЕ {
                   ОБМЕН
                   ВЛЕВО
                   Вычитай   
                  }                    
           ЯЩИК+                       
           ВПРАВО
          }                            
 Пиши_ответ                            
КОНЕЦ // Сравни_числа                  
//-------------------------------------
ЭТО Пиши_ответ
 ПОВТОРИ 2 ВПРАВО                      
 ПИШИ н
 ВПРАВО                                
 ПИШИ о                                
 ВПРАВО
 ПИШИ д
 ВПРАВО
 ПИШИ =
 ВПРАВО
 ЯЩИК-
КОНЕЦ // Пиши_ответ
//-------------------------------------
ЭТО Вычитай
 ЕСЛИ Я<Л ТО ОБМЕН                     
 ПОКА НЕ 0 {                           
            МИНУС                      
            ОБМЕН
            МИНУС                      
            ОБМЕН                      
           }                           
  ОБМЕН
КОНЕЦ // Вычитай
//-------------------------------------
ЭТО Действие_с_нулями
  ПОВТОРИ 2 ВПРАВО
  ПИШИ н                               
  ВПРАВО
  ПИШИ е
  ПОВТОРИ 2 ВПРАВО
  ПИШИ о
  ВПРАВО
  ПИШИ п
  ВПРАВО
  ПИШИ р
  ВПРАВО
  ПИШИ е                               
  ВПРАВО                               
  ПИШИ д                               
  ВПРАВО
  ПИШИ е                               
  ВПРАВО                               
  ПИШИ л                               
  ВПРАВО
  ПИШИ е
  ВПРАВО                               
  ПИШИ н
КОНЕЦ // Действие_с_нулями
//-------------------------------------


Решение 1572
Оценка:7
Автор решения:
 ┌─────┐          ┌──┐
 │     │ ┌─┐ ┌──┐ │  │  │  │ ┌     ┐ │ ┌┤ │   │
 │     │ ├   ├──┘ ├──┴┐ └──┤ │  │  │ │┌┘│ ├───┤
 │     │ └─┘ └    └───┘ ───┘ └──┴──┘ └┘ │ │ │ │
               ┌─┐                          │  ┌
              ┌┘ └┐       ┌──┐   │   │ │ ┌┤ │ ┌┘
             ┌┘   └┐     ┌┘  └┐  ├───┤ │┌┘│ ├┬┘
          ┌──┴─────┴──┐  ├────┤  │   │ └┘ │ │└┐
          └           ┘  │    │               └
Диаграмма переходов
 a - содержимое первой из двух клеток
 b - содержимое второй из двух клеток
              ┌──────┐
  ┌──────────>│ вход │<─────────┐
  │           └┬─┬──┬┘          │
  │   ┌──a<b───┘ │  └──a>b──┐   │
  │   │         a=b         │   │
  │   V          V          V   │
┌─┴──────┐    ┌──────┐   ┌──────┴─┐
│ меньше │    │выход │   │ больше │
└────────┘    └──────┘   └────────┘

Программа, описание программы
ЭТО вход                               
 ЕСЛИ НЕ 0                             
  ТО
  {                                    
   ВПРАВО                              
   ЕСЛИ НЕ 0 ТО { ВЛЕВО начало }       
   ИНАЧЕ ПИШИ ПУСТО
  }                                    
  ИНАЧЕ                                
  {                                    
   ПИШИ ПУСТО
   ВПРАВО
   ЕСЛИ 0                              
    ТО ПИШИ ?
  }
КОНЕЦ                                  

ЭТО начало
 ЯЩИК+
 ВПРАВО
 ЕСЛИ Я=Л ТО выход                     
 ИНАЧЕ ЕСЛИ Я<Л                        
  ТО                                   
   {                                   
    ОБМЕН
    меньше                             
    ВЛЕВО
    начало                             
   }                                   
 ИНАЧЕ ЕСЛИ Я>Л ТО больше
КОНЕЦ                                  

ЭТО выход
 ПИШИ ПУСТО
 ВЛЕВО
КОНЕЦ                                  

ЭТО меньше                             
 МИНУС                                 
 ЕСЛИ НЕ 0 ТО меньше
 ИНАЧЕ ОБМЕН                           
 МИНУС
КОНЕЦ

ЭТО больше
 ОБМЕН                                 
 ВЛЕВО
 ОБМЕН                                 
 начало                                
КОНЕЦ           


к о м м е н т а р и й  к у р а т о р а
Отличные решения. Второе решение с таблицей переходов и рекурсивными
пружинками очень красивое! Чувствуется рука мастера.
