Це завдання полягає в кодуванні перекладача для Mondrian мови опису картини (MPDL).
Визначення мови
Мова діє на стеку прямокутників. Прямокутник визначається лівою верхньою лівою і нижньою правою координатами. Координати повинні бути цілими числами. Стек ініціалізується єдиним прямокутником з атрибутами(1,1,254,254)
Кожна команда має такий формат:
<character><integer>
Є три команди:
v<integer>
: виконати вертикальний розріз на останньому прямокутнику в стеку у положенні, зазначеному параметром (у відсотках). Прямокутник-джерело виймається зі стека і замінюється двома новими прямокутниками, які є результатом розщеплення. Лівий прямокутник висувається на стек, потім правий прямокутник. Оскільки координати прямокутника є цілими числами, дроби повинні бути округлені до найбільшого меншого цілого числа.
h<integer>
: горизонтальний розкол. Верхній прямокутник висувається на стек, потім нижній прямокутник.
c<integer>
: видаляє останній прямокутник зі стека та зафарбовує його в колір, заданий як параметр. 1 = білий, 2 = червоний, 3 = синій, 4 = жовтий
Виклик
Напишіть програму, яка приймає за параметр опис картини та створює бітову картину розміром 256х256 зображених прямокутників. Прямокутники повинні бути відокремлені чорною лінією в 3 пікселі. Прямокутник одного або двох пікселів повинен мати свої нечорні пікселі, приховані чорними пікселями.
Ви можете читати дані як параметр або як файл. Команди повинні бути розділені пробілом. Ви можете припустити, що вхідний файл має правильний синтаксис і не має проміжних чи провідних пробілів, вкладок тощо. Вихід можна безпосередньо відображати на екрані або зберігати у файлі.
Виграє найкоротший код.
Тест
Наступне джерело:
v25 h71 v93 h50 c4 c1 c1 c2 h71 c3 h44 c1 c1
Слід створити склад II червоного, синього та жовтого кольорів :
v30 v50 c1 c5 h70 v50 c1 c3 c2
.
v
аh
аргументи мають бути в пікселях