Ограничения: время – 200ms/500ms, память – 256MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод 
Послать решение Blockly Посылки Темы Где Обсудить (0)
Напишите в Blockly программу для робота, который перемещает разноцветные диски трех различных размеров между тремя колышками.
Первый колышек красного цвета, второй -- жёлтого, третий -- зелёного. Первоначально все девять дисков находятся на первом колышке.

После выполнения программы диски на колышках должны быть распределены по цвету (во всех подзадачах) -- на каждом
колышке только диски, совпадающие по цвету с цветом колышка -- и упорядочены по размеру (только в подзадачах 2 и 4) -- на каждом колышке
размеры дисков возрастают сверху вниз.
Для управления роботом вы можете использовать следующие блоки из категории "Робот".

Первый блок позволяет переместить диск с одного колышка на другой. Если диска на указанном колышке нет, то команда игнорируется.
Второй блок позволяет получить количество дисков на указанном колышке.
Третий и четвёртый блок позволяет узнать цвет и размер верхнего диска на указанном колышке.
Цвет возвращается как число от 1 до 3 (1 -- красный, 2 -- жёлтый, 3 -- зелёный), размер как число от 1 до 3.
Если на указанном колышке нет ни одного диска, то оба блока возвращают число 0.
Например, для перемещения трёх верхних дисков можно выполнить следующую программу:

Следующие блоки находятся в категории "Управление".

Первые два блока позволяют выбрать выполняемую группу
блоков в зависимости от условия. В настройках блока (символ шестеренки) можно добавить или убрать дополнительные ветки выбора.
После завершения настройки нужно повторно нажать на символ шестерёнки.
Третий блок позволяет задать число как аргумент для какого-либо блока.
Четвертый блок позволяет сравнить два значения.
Пятый и шестой блоки позволяют задавать сложные условия, используя логические операции И, ИЛИ, НЕ.

Седьмой блок позволяет повторять некоторую группу блоков, пока условие истинно.
Например, для перемещения шести верхних дисков можно написать программу

В этой программе две похожих группы блоков, за исключением двух констант.
Упростить программу поможет блок из категории "Функции".

После вставки блока и изменения имени
нужно щелкнуть символ шестеренки и добавить параметры n и k.

После завершения настройки нужно повторно нажать на символ шестерёнки.
Добавленные параметры появятся в категории "Переменные" и их можно будет использовать в блоках вместо констант:

Созданная функция появляется в категории "Функция" и её можно добавить в программу, указав значения для
параметров с помощью блока-числа из категории "Управление":

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

Первая кнопка позволяет отправить ваше решение для проверки в проверяющую систему соревнований, вторая кнопка выполняет запуск программу локально, третья –
пошаговое выполнение или временная остановка программы, четвертая -- завершение выполнения программы, после которой программа будет выполняться сначала.
Например, после запуска на выполнение программы, показанной выше, состояние поля изменится на

В поле "Начальное состояние" можно задать начальный порядок дисков. При нажатии
левой кнопкой мыши на диск, этот диск переставляется на вершину первого колышка.
*Система оценки и описание подзадач*
||.u|Подзадача 1 (10 баллов)||
В этой подзадаче 1 тест, с начальным расположением дисков, показанным на рисунке.

Необходимо разложить диски по цветам -- на колышке 1 должны быть диски только цвета 1 (красного),
на колышке 2 -- только цвета 2 (жёлтого), на колышке 3 -- только цвета 3 (зелёного).
В каком порядке расположены диски по размерам, не имеет значения.
||.u|Подзадача 2 (10 баллов)||
Необходимые подзадачи: 1.
В этой подзадаче 1 тест, показанный на рисунке.

Необходимо разложить диски по цветам и размерам так, чтобы конечное состояние совпало с расположением на рисунке:

||.u|Подзадача 3 (50 баллов)||
Необходимые подзадачи: 1.
Девять дисков расположены на первом колышке. Необходимо разложить диски по цветам -- на колышке 1 должны быть диски только
цвета 1 (красного), на колышке 2 -- только цвета 2 (жёлтого), на колышке 3 -- только цвета 3 (зелёного).
В каком порядке расположены диски по размерам, не имеет значения.
В этой подзадаче 5 тестов, каждый тест оценивается в 10 баллов. Баллы за каждый тест начисляются независимо.
||.u|Подзадача 4 (30 баллов)||
Необходимые подзадачи: 1,2,3.
Девять дисков расположены на первом колышке. Необходимо разложить диски по цветам и размерам (см. рисунок выше).
В этой подзадаче 6 тестов, каждый тест оценивается в 5 баллов. Баллы за каждый тест начисляются независимо.
По запросу сообщается результат окончательной проверки на каждом тесте.
---
Для написания программы для робота используется [специальная версия среды Blockly](blockly/2788.html).
Вы можете использовать полную среду Blockly при решении других задач этого соревнования, выбрав пункт Blockly
в информационном меню задачи.