Олимпиада по информатике для школьников 8-11 класса Пермского края проводится УДО "Компьютерная школа ПГУ" в рамках подготовки к олимпиаде "Юные таланты"

5.1.18

Итоги 4 тура

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

Лучшей работой 4 тура признано решение Чистякова Роберта. Приводим полностью это решение и замечания к нему:
АЛГОРИТМ ПУТЬ_0
    Дано: Исполнитель в т.А
    Надо: Воспроизвести образец
НАЧ
    ДЕЛАЙ начало
    ДЕЛАЙ экран
    ДЕЛАЙ переход
    ДЕЛАЙ экран
КОН
ПРОЦЕДУРА начало
    ПРЫЖОК
    ДЕЛАЙ пп
    ПОВОРОТ
    ПРЫЖОК
КОНЕЦ ПРОЦЕДУРЫ
ПРОЦЕДУРА экран
    ПОКА впереди НЕ стена
    НЦ
        ДЕЛАЙ линия
        ДЕЛАЙ возврат
        ДЕЛАЙ проверка
    КЦ
КОНЕЦ ПРОЦЕДУРЫ
ПРОЦЕДУРА линия
    ПОВОРОТ
    ПОКА впереди НЕ стена
    НЦ
        ПРЫЖОК
        ЕСЛИ впереди НЕ стена
           ТО
               ДЕЛАЙ вертушка
               ШАГ
        ВСЁ
    КЦ
КОНЕЦ ПРОЦЕДУРЫ
ПРОЦЕДУРА возврат
    ДЕЛАЙ пп
    ПОКА впереди НЕ стена
    НЦ
        ПРЫЖОК
    КЦ
КОНЕЦ ПРОЦЕДУРЫ
ПРОЦЕДУРА проверка
    ДЕЛАЙ пп
    ДЕЛАЙ начало
КОНЕЦ ПРОЦЕДУРЫ
ПРОЦЕДУРА переход
    ДЕЛАЙ вертушка
    ПОВОРОТ
КОНЕЦ ПРОЦЕДУРЫ
ПРОЦЕДУРА вертушка
    ДЕЛАЙ пп
    ПРЫЖОК
    ДЕЛАЙ пп
КОНЕЦ ПРОЦЕДУРЫ
ПРОЦЕДУРА пп
    ПОВОРОТ
    ПОВОРОТ
КОНЕЦ ПРОЦЕДУРЫ

Замечания: Решение понятное, хорошо структурировано. Можно еще упростить переход ко второй половине рисунка.
            Однако на олимпиадах в задании по алгоритмизации часто ставится дополнительное требование: найти самое КОРОТКОЕ по числу команд решение. Так что можно отказаться от использования некоторых процедур, особенно тех, которые вызываются всего 1-2 раза. В этом решении 59 строк. Сравните его с другим решением, в котором 44 строки:

АЛГОРИТМ ПУТЬ_0
    Дано: Исполнитель в т.А
    Надо: Воспроизвести образец
НАЧ
    ДЕЛАЙ половина
    ПОВОРОТ
    ПОВОРОТ
    ДЕЛАЙ половина
КОН
ПРОЦЕДУРА половина
    ПОВОРОТ
    ПОВОРОТ
    ПОВОРОТ
    ПРЫЖОК
    ПОКА впереди НЕ стена
    НЦ
        ПОВОРОТ
        ПРЫЖОК
        ДЕЛАЙ линия_возврат
        ПОВОРОТ
        ПРЫЖОК
    КЦ
КОНЕЦ ПРОЦЕДУРЫ
ПРОЦЕДУРА линия_возврат
    ПОКА впереди НЕ стена
    НЦ
        ПРЫЖОК
        ЕСЛИ впереди НЕ стена
           ТО
               ПОВОРОТ
               ПОВОРОТ
               ПРЫЖОК
               ПОВОРОТ
               ПОВОРОТ
               ШАГ
        ВСЁ
    КЦ
    ПОВОРОТ
    ПОВОРОТ
    ПОКА впереди НЕ стена
    НЦ
        ПРЫЖОК
    КЦ
КОНЕЦ ПРОЦЕДУРЫ