Tantangan ini terdiri dari pengkodean juru bahasa untuk bahasa deskripsi lukisan Mondrian (MPDL).
Definisi bahasa
Bahasa beroperasi pada setumpuk persegi panjang. Sebuah persegi panjang ditentukan oleh koordinat kiri atas dan koordinat kanan bawah. Koordinat harus bilangan bulat. Tumpukan diinisialisasi dengan satu persegi panjang dengan atribut(1,1,254,254)
Setiap perintah memiliki format berikut:
<character><integer>
Ada tiga perintah:
v<integer>
: melakukan split vertikal pada persegi panjang terbaru di stack, pada posisi yang ditunjukkan oleh parameter (sebagai persentase). Persegi panjang sumber dihapus dari tumpukan dan diganti dengan dua persegi panjang baru hasil perpecahan. Persegi panjang kiri didorong pada tumpukan, lalu persegi panjang kanan. Karena koordinat persegi panjang adalah bilangan bulat, pecahan harus dibulatkan menjadi bilangan bulat terbesar yang lebih kecil.
h<integer>
: perpecahan horizontal. Persegi panjang atas didorong pada tumpukan, lalu persegi panjang bawah.
c<integer>
: menghapus persegi panjang terbaru dari tumpukan dan mengecatnya ke warna yang diberikan sebagai parameter. 1 = putih, 2 = merah, 3 = biru, 4 = kuning
Tantangan
Tulis sebuah program yang mengambil sebagai parameter deskripsi lukisan dan membuat representasi bitmap 256x256 dari persegi panjang yang dilukis. Persegi panjang harus dipisahkan dengan garis hitam 3 piksel. Persegi panjang satu atau dua piksel harusnya memiliki piksel non-hitam yang disembunyikan oleh piksel hitam tepi.
Input dapat dibaca sebagai parameter atau sebagai file, terserah Anda. Perintah-perintah harus dipisahkan oleh spasi. Anda dapat mengasumsikan bahwa file input memiliki sintaks yang benar dan tidak memiliki spasi tambahan, tab, dll. Outputnya dapat langsung ditampilkan pada layar, atau disimpan ke file, terserah Anda.
Kode terpendek menang.
Uji
Sumber berikut:
v25 h71 v93 h50 c4 c1 c1 c2 h71 c3 h44 c1 c1
Harus menghasilkan Komposisi II Merah, Biru dan Kuning :
v30 v50 c1 c5 h70 v50 c1 c3 c2
.
v
danh
argumen harus dalam piksel