Datatähti 2013: Loppukilpailu


Tehtävänanto

Uolevi on tehnyt mustavalkoisen taideteoksen ja haluaa liittää sen pelinsä alkuun. Valitettavasti Uolevin käyttämä ohjelmointikieli sisältää vain yhden piirtokomennon (xor-komento), joka suorittaa xor-operaation valitun suorakulmion muotoisen alueen pikseleille.

Xor-komento muuttaa valitun suorakulmaisen alueen valkoiset pikselit mustiksi ja mustat pikselit valkoisiksi. Operaation suorittavan komennon yhteydessä annetaan valitun suorakulmion vasen ylänurkka ja oikea alanurkka. Kuvan vasemman ylänurkan kohta on (1, 1).

Tarkastellaan esimerkiksi seuraavaa komentosarjaa 5x5-kuvassa:

  1. xor 2 2 4 3
  2. xor 3 3 5 5
  3. xor 3 1 3 4

Lähtökohtana on kokonaan valkoinen kuva:

     
     
     
     
     

Komennon "xor 2 2 4 3" jälkeen tuloksena on:

     
     
     
     
     

Komennon "xor 3 3 5 5" jälkeen tuloksena on:

     
     
     
     
     

Komennon "xor 3 1 3 4" jälkeen tuloksena on:

     
     
     
     
     

Uolevin taideteos on kooltaan 200x200 pikseliä ja se on tiedostossa dt13l_xor.in. Tehtävänäsi on etsiä sarja xor-komentoja, jotka tuottavat taideteoksen. Mitä vähemmän komentoja tarvitset, sitä paremmaksi vastauksesi katsotaan.

Palautus

Tehtävässä palautetaan tekstimuotoinen kuvaus xor-komennoista. Tehtävässä ei siis palauteta laatimasi ohjelman koodia.

Kuvauksen ensimmäisellä rivillä on xor-komentojen määrä. Tämän jälkeen jokaisella seuraavalla rivillä on neljä lukua vastaten yksittäisessä xor-komennossa valitun suorakulmion vasenta ylänurkkaa ja oikeaa alanurkkaa. Kun komennot suoritetaan antamassasi järjestyksessä, tuloksena pitää saada Uolevin taideteos.

Esimerkiksi seuraava kuvaus vastaa esimerkkiä:

3
2 2 4 3
3 3 5 5
3 1 3 4