Autorské riešenie
[stiahni]

  • Počet riešiteľov: 21/30= 70 %

  • Úspešnosť riešenia: 3,14/5  = 63%

Pre vykreslenie radu dlažby je dôležité nájsť v ňom časti, ktoré sa opakujú. Na obrázku (Obr 1.) je zvýraznená jedna dlaždica tvaru pravouhlého 12-uholníka, ktorá je základným stavebným dielom pre vytvorenie radu zámkovej dlažby.

dlazdice

Obr 1. Rad zámkovej dlažby so 7 dlaždicami

Po lepšom prezretí si tvaru dlaždice na obrázku (Obr 2.) si môžeme všimnúť, že sa dá vykresliť opakovaním vykreslenia na seba nadväzujúcich dvoch menších rovnakých úsečiek a jednej dvojnásobne dlhšej úsečky.

dlazdica

Obr 2. Dlaždica tvaru 12-uholníka s vyznačenou postupnosťou úsečiek

Procedúra vzor na vykreslenie dlaždice s veľkosťou podľa dlhšej úsečky pravouhlého 12-uholníka môže vyzerať, napr. takto:

viem vzor :velkost :farbaVyplne
  nechFarbaVyplne :farbaVyplne
  polygon [
    opakuj 4 [
      dopredu (:velkost/2)
      vpravo 90
      dopredu (:velkost/2)
      vlavo 90
      dopredu :velkost
      vpravo 90
    ]
  ]
koniec

Rad zámkovej dlažby vykreslíme opakovaným vykreslením dlaždice (procedúra vzor) a posunutím sa na pozíciu počiatku kreslenia nasledovnej dlaždice, čo je zobrazené na obrázku (Obr 3.)

dlazdice

Obr 3. Rad zámkovej dlažby s vyznačenými pozíciami počiatkov kreslenia dlaždíc

Pri vykresľovaní radu dlaždíc použijeme pomocné procedúry - procedúru posun1 na presunutie sa na pozícku nasledovnej dlaždice a procedúru posun2 na návrat na počiatok vykreslenia celého radu dlaždíc. Procedúra rad na vykreslenie radu dlaždíc môže vyzerať, napr. takto:

viem rad :pocet :velkost :farbaVyplne1 :farbaVyplne2
  vpravo 45
  opakuj :pocet [
    ak2 zvysok pocitadlo 2=0 [
      vzor :velkost :farbaVyplne1
    ][
      vzor :velkost :farbaVyplne2
    ]
    posun1 :velkost
  ]
  posun2 :velkost :pocet
  vlavo 45
koniec

Striedanie farieb výplní dlaždíc zabezpečíme pomocou príkazu vetvenia ak2 a funkcie zvyšok.

Procedúra posun1 na presunutie sa na pozíciu nasledovnej dlaždice môže vyzerať nasledovne:

viem posun1 :velkost
  peroHore
  dopredu :velkost
  vpravo 90
  dopredu :velkost
  vlavo 90
  peroDolu
koniec

Procedúra posun2 na návrat na počiatok vykreslenia celého radu dlaždíc môže vyzerať nasledovne:

viem posun2 :velkost :pocet
  peroHore
  vlavo 90
  dopredu :pocet*:velkost
  vlavo 90
  dopredu :pocet*:velkost
  vlavo 180
  peroDolu
koniec

Táto súťažná úloha je zameraná na použitie stratégií riešenia problémov (rozlož problém do podproblémov, nakresli si obrázok), na výpočty s funkcoiu zvyšok, na použitie príkazu opakovania, vetvenia a procedúr s parametrami.

Vaše zaujímavé riešenia a najčastejšie chyby

Do riešenia tejto úlohy sa zapojilo 21 tímov, z toho 3 tímy (JM&JM, ikztzu, švédi) dosiahli plný počet bodov. Celkový priemer úspešnosti riešení bol 3,14 bodov z maximálneho počtu 5 bodov (62,86% úspešnosť).

Obzvlášť chceme vyzdvihnúť tím JM&JM, ktorého riešenie obsahovalo prívetivé grafické prostredie. Chválime aj tím švédi, ktorý vycentroval vykreslenie radu dlaždíc. V jednom riešení súťažiaci namiesto funkcií zvyšok a počítadlo použili jednu premennú, ktorej hodnota sa striedavo menila na 0 a 1. Časť súťažiacich v svojich riešeniach použila pri kreslení dlaždice v parametri veľkosť kratšiu úsečku 12-uholníka a časť súťažiacich dlhšiu úsečku.

Nedostatky, ktoré sme našli v riešeniach súťažiacich:

  • vykresľovanie radu dlaždic len s párnym počtom dlaždíc,
  • nepoužitie niektorých parametrov (počet, veľkosť, farba1, farba2) pri vykresľovaní radu dlaždíc,
  • nepresný výpočet presunu na pozíciu nasledovnej dlaždice,
  • nepoužitie procedúry na vykreslenie dlaždice,
  • zbytočné používanie globalnych premenných,
  • nemnemotechnické jednopísmenkové pomenovanie premenných,
  • neprehľadný zápis programu - veľa príkazov v jednom riadku, nedôsledné odsadenie príkazov.