3.2. Решения задач тренировочного тура

   Ниже приводятся  возможные  ответы  к задачам тренировочного
тура.

   1. Лишним является число  12, так как все остальные - нечет-
ные.

   2. Гибралтарского моря не существует.

   3. В последовательности присутствуют только буквы с нечетны-
ми номерами в алфавите, поэтому  следующей  должна  идти  буква
"к".

   4. Переносится слово "СОН", потому что справа  все слова на-
чинаются на букву "с".

   5. Переносится слово  "параграфы",  та  как справа все слова
стоят во множественном числе.

   6. На выходе ящика  - число букв в слове, обозначающем звук,
издаваемый животным:
                        корова - "му"  - 2
                        свинья - "хрю" - 3
                        и так далее.

   7. Цифры кодируются буквами по следующей таблице:
                           ┌─────┬───┐
                           │Цифра│Код│
                           ├─────┼───┤
                           │  0  │ ж │
                           │  1  │ з │
                           │  2  │ и │
                           │  3  │ й │
                           │  4  │ к │
                           │  5  │ л │
                           │  6  │ м │
                           │  7  │ н │
                           │  8  │ о │
                           │  9  │ п │
                           └─────┴───┘

   8. Входное число  разбивается на пары соседних цифр. Резуль-
тирующее число получается суммированием значений всех пар. Зна-
чение пары определяется по правилу:
          nx -> n*10^x (n умножается на 10 в степени x)
          ││
          │└─ вторая цифра в паре
          └── первая цифра в паре
   Например, число 521180 превращается в 5*100 + 1*10 + 8 = 518.

   9. Зашифрованный текст:
    ┌──────────────────────────────────────────────────────┐
    │ - ты и я, мы вместе пойдем в лес, - сказал енот.     │
    │ - хорошо, но ты будешь идти первым, - предложил заяц.│
    │ - я всегда хожу первым, - гордо ответил енот.        │
    │ и друзья направились в лесную чащу.                  │
    └──────────────────────────────────────────────────────┘
   Ключ к шифру:
             Код буквы = номер буквы в алфавите + 10

   10.
                         ЗАПОМНИТЬ 14286
                         ЗАПОМНИТЬ 34
                         ЗАПОМНИТЬ 1560
                         ЗАПОМНИТЬ 6
                         ЗАПОМНИТЬ 46
                         ЗАПОМНИТЬ 11
                         ЗАПОМНИТЬ 14
                         УМНОЖЬ
                         СЛОЖИ
                         УМНОЖЬ
                         ВЫЧТИ
                         УМНОЖЬ
                         ВЫЧТИ

   11.
     1 часть                 2 часть

     З 1220 ─┐               З 123 ──┐
     З 110   │               З 120   │
     З 24    │               С       │
     З 5     │               З 342   │
     У       │               С       │
     З 20    │               З 34    │
     В       ├─ числитель    З 52    ├─ знаменатель
     З 2     │               У       │
     З 11    │               З 907   │
     У       │               С       │
     З 28    │               З 5     │
     С       │               Д       │
     Д       │               В      ─┘
     У       │               Д      ─── дробь
     В      ─┘

   12. Ключ  к  решению: отложенная в рекурсии команда ВВЕРХ  в
процедуре Продолжить_Поиск. Так как при рекурсивном вызове про-
цедур Разделить_на_2 и Продолжить_Поиск происходит выполнение 2
команд ВНИЗ (за  исключением,  быть может, последнего раза), то
число движений вверх за  счет  отложенной команды ВВЕРХ будет в
два раза меньше числа движений вниз.

ЭТО Деление
 Разделить_на_2
 ВВЕРХ // Коррекция исполнителя
КОНЕЦ

ЭТО Разделить_на_2
 ВНИЗ
 ЕСЛИ НЕ А ТО Продолжить_Поиск
КОНЕЦ

ЭТО Продолжить_Поиск
 ВНИЗ
 Разделить_на_2
 ВВЕРХ  // Отложенная в рекурсии команда
КОНЕЦ

   13. Кубик с  буквой  "Ф"  используется для определения места
положения Кукарачи на поле после того, как найдена буква "Ш".

ЭТО Ишак
 ВПРАВО
 // Поиск буквы Ш
 ПОКА НЕ Ш Поиск
 ПОВТОРИ 3  ВПРАВО
 ВЛЕВО
 // Поиск буквы Ф
 ПОКА НЕ Ф ВНИЗ
 // удаление Ф с поля
 ВНИЗ
 // Установка Ш на место
 Установка
КОНЕЦ

ЭТО Поиск
 ВЛЕВО
 ВНИЗ
 ВПРАВО
КОНЕЦ

ЭТО Установка
 ПОВТОРИ 9 ВВЕРХ
 ПОВТОРИ 2 ВПРАВО
 ПОВТОРИ 8 ВНИЗ
КОНЕЦ

   14. Алгоритм работы программы:
        1) Найти букву А
        2) Вернуть А на место
        3) Найти В
        4) Вернуть В на место
        5) Установить исполнителя в третью вершину треугольника.

   Шаги 3) - 5) выполняет процедура Встать_На_Место. Эта проце-
дура рекурсивно перемещает исполнитель вниз до  буквы В, накап-
ливая отложенные команды ВПРАВО и  ВВЕРХ.  Именно  эти  команды
после  окончания  рекурсии обеспечат  установку  исполнителя  в
третью вершину треугольника. Перед выполнением отложенной  пары
ВПРАВО и ВВЕРХ выполняется процедура Завершить_Работу, записан-
ная на  ветви ИНАЧЕ условной  команды. Она возвращает букву В в
исходное положение на поле исполнителя.

ЭТО Треугольник
 // Поиск А
 ПОКА НЕ А ВПРАВО
 // Букву А на место
 Восстановить
 ВНИЗ
 ВЛЕВО
 // Найти В и встать в третью
 // вершину треугольника
 Встать_На_Место
КОНЕЦ

ЭТО Встать_На_Место
 ВНИЗ
 ЕСЛИ НЕ В
   ТО Встать_На_Место
   ИНАЧЕ Завершить_Работу
 ВПРАВО // Отложенные в рекурсии
 ВВЕРХ  // команды. Они выполнятся
        // столько раз, сколько было
        // рекурсивных вызовов, т.е.,
        // то есть столько раз, сколько
        // исполнитель шагнул вниз.
КОНЕЦ

ЭТО Восстановить
 ВНИЗ
 ПОВТОРИ 2 ВПРАВО
 ВВЕРХ
 ВЛЕВО
КОНЕЦ

// Вернуть букву В на место
ЭТО Завершить_Работу
 ВЛЕВО
 ПОВТОРИ 2 ВНИЗ
 ВПРАВО
 ВВЕРХ
 ВПРАВО
 ПОВТОРИ 2 ВВЕРХ
КОНЕЦ

   15. Алгоритм этой  программы аналогичен алгоритму  программы
задачи 14:
        1) Найти букву А
        2) Вернуть А на место
        3) Найти В
        4) Вернуть В на место
        5) Найти С
        6) Вернуть С на место
        7) Установить исполнитель в четвертую вершину прямоугольника.

   Шаги 3) - 7) выполняет процедура Встать_На_Место. Эта проце-
дура рекурсивно перемещает исполнитель вниз до  буквы В, накап-
ливая отложенные команду ВВЕРХ. Именно эта  команда, после того
как найдена буква С, установит исполнителя  в четвертую вершину
прямоугольника.

ЭТО Прямоугольник
 // Поиск буквы А
 ПОКА НЕ А ВПРАВО
 // Букву А на место
 Восстановить
 ВНИЗ
 ВЛЕВО
 // Найти В, С и встать в четвертую
 // вершину прямоугольника
 Встать_На_Место
КОНЕЦ                                  

ЭТО Встать_На_Место                    
 ВНИЗ
 ЕСЛИ НЕ В
   ТО Встать_На_Место
   ИНАЧЕ Завершить_Работу
 ВВЕРХ  // Команда будет работать после
        // того как найдена буква С
КОНЕЦ                                  
                                       
ЭТО Восстановить                       
 ВНИЗ
 ПОВТОРИ 2 ВПРАВО
 ВВЕРХ
 ВЛЕВО
КОНЕЦ

ЭТО Завершить_Работу
 ВЛЕВО
 ПОВТОРИ 2 ВНИЗ
 ВПРАВО
 ВВЕРХ
 ВПРАВО
 ВВЕРХ
 ПОКА НЕ С ВПРАВО
 Восстановить
 ВВЕРХ
 ВЛЕВО
КОНЕЦ
