                     Решения задач
                     -------------
5.2.11. Задача b (8 баллов) Кукарачья геометрия.
Средний бал решений: 5.7 (72%)

   Исполнитель расположен где-то внутри горизонтального отрезка
ab. Сместить его  вниз из исходного положения на Pab. Известно,
что столбец точки a больше 2.
   Пример начальной установки среды:
                    1 2 3 4 5 6 7 8 9
                   ┌─┬─┬─┬─┬─┬─┬─┬─┬─┬
                 1 │ │ │ │ │ │ │ │ │ │
                   ├─┼─┼─┼─┼─┼─┼─┼─┼─┼
                 2 │ │ │a│ │ │¤│ │b│ │
                   ├─┼─┼─┼─┼─┼─┼─┼─┼─┼
                 3 │ │ │ │ │ │ │ │ │ │
                   ├─┼─┼─┼─┼─┼─┼─┼─┼─┼
                 4 │ │ │ │ │ │ │ │ │ │
                   ├─┼─┼─┼─┼─┼─┼─┼─┼─┼
                 5 │ │ │ │ │ │ │ │ │ │
                   ├─┼─┼─┼─┼─┼─┼─┼─┼─┼

   Среда после выполнения программы:
                    1 2 3 4 5 6 7 8 9
                   ┌─┬─┬─┬─┬─┬─┬─┬─┬─┬
                 1 │ │ │ │ │ │ │ │ │ │
                   ├─┼─┼─┼─┼─┼─┼─┼─┼─┼
                 2 │ │ │a│ │ │ │ │b│ │
                   ├─┼─┼─┼─┼─┼─┼─┼─┼─┼
                 3 │ │ │ │ │ │ │ │ │ │
                   ├─┼─┼─┼─┼─┼─┼─┼─┼─┼
                 4 │ │ │ │ │ │ │ │ │ │
                   ├─┼─┼─┼─┼─┼─┼─┼─┼─┼
                 5 │ │ │ │ │ │ │ │ │ │
                   ├─┼─┼─┼─┼─┼─┼─┼─┼─┼
                 6 │ │ │ │ │ │ │ │ │ │
                   ├─┼─┼─┼─┼─┼─┼─┼─┼─┼
                 7 │ │ │ │ │ │¤│ │ │ │
                   ├─┼─┼─┼─┼─┼─┼─┼─┼─┼



   Решение.

 Описание алгоритма.
   1) "Измерим" и  запомним  в  отложенной команде ВПРАВО число
шагов исполнителя от исходного положения до точки "a".
   2) "Измерим" и  запомним в отложенной паре команд ВНИЗ-ВЛЕВО
число шагов исполнителя от "a" до "b".
   3) Отпустим рекурсивные "пружины".
   Сначала поработает  пара  ВНИЗ-ВЛЕВО  и  исполнитель уйдет в
строку, отстоящую от отрезка ab на  длину  этого  отрезка.  При
этом исполнитель будет  находиться в том столбце, в котором на-
ходится точка "a".
   Далее начнет  работать  отложенная  команда ВПРАВО и сместит
исполнитель в тот столбец, в  котором  он  был первоначально до
начала работы программы.



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

