Bu zorluk Mondrian resim tanımlama dili (MPDL) için bir tercüman kodlamasından oluşur .
Dil tanımı
Dil bir dikdörtgen yığını üzerinde çalışır. Bir dikdörtgen sol üst koordinatı ve sağ alt koordinatı ile tanımlanır. Koordinatlar tamsayı olmalıdır. Yığın, nitelikleri olan tek bir dikdörtgenle başlatılır(1,1,254,254)
Her komut aşağıdaki biçime sahiptir:
<character><integer>
Üç komut vardır:
v<integer>
: yığındaki en son dikdörtgenin üzerinde, parametre ile belirtilen konumda (yüzde olarak) dikey bir bölme gerçekleştirir. Kaynak dikdörtgen yığından kaldırılır ve ayrılmanın sonucu olan iki yeni dikdörtgenle değiştirilir. Sol dikdörtgen desteye, ardından sağ dikdörtgene itilir. Dikdörtgen koordinatlar tamsayı olduğu için kesirler en küçük daha küçük tamsayıya yuvarlanmalıdır.
h<integer>
: yatay bölünmüş. Üst dikdörtgen önce yığına, sonra da alt dikdörtgene itilir.
c<integer>
: en son dikdörtgeni yığından kaldırır ve parametre olarak verilen renge boyar. 1 = beyaz, 2 = kırmızı, 3 = mavi, 4 = sarı
Meydan okuma
Parametre olarak bir resim açıklaması alan ve boyalı dikdörtgenlerin 256x256 bitmap gösterimini oluşturan bir program yazın. Dikdörtgenler 3 piksel siyah bir çizgi ile ayrılmalıdır. Bir veya iki piksel dikdörtgenin siyah olmayan piksellerinin kenarlık siyah pikselleri tarafından gizlenmesi gerekir.
Giriş size bir parametre veya bir dosya olarak okunabilir. Komutlar bir boşlukla ayrılmalıdır. Girdi dosyasının doğru sözdizimine sahip olduğunu ve sondaki veya öndeki boşluklar, sekmeler vb. Olmadığını varsayabilirsiniz. Çıktı doğrudan ekranda görüntülenebilir veya bir dosyaya kaydedilebilir.
En kısa kod kazanır.
Ölçek
Aşağıdaki kaynak:
v25 h71 v93 h50 c4 c1 c1 c2 h71 c3 h44 c1 c1
Kompozisyon II'yi Kırmızı, Mavi ve Sarı renkte üretmelidir :
v30 v50 c1 c5 h70 v50 c1 c3 c2
.
v
veh
argümanlar piksel cinsinden olmalıdır