Autorské riešenie
[stiahni imp]

  • Počet riešiteľov: 4 / 5 = 80%

  • Úspešnosť riešenia:  5,8 / 6 = 96%

Úlohu bolo vytvoriť procedúru s vhodnými parametrami, ktorá vykreslí hraciu plochu hry Backgammon podľa stanovených pravidiel. Túto úlohu je veľmi vhodné riešiť s použitím pomocných procedúr - vykreslenie plochy pozadia hracej plochy (procedúra plocha), vykreslenie rámu okolo hracej plochy (procedúra ram), vykreslenie rámu v polovici hracej plochy (procedúra ram2) a vykreslenie obdĺžnikov dvoch striedajúcich sa farieb (procedúra celá).

Pri vykreslení pozadia hracej plochy (procedúra plocha) je potrebné použiť parametre šírka obdĺžnika a farba pozadia. Z obrázka v zadaní je možné zistiť, že hracia plocha predstavuje štvorec so stranou dĺžky 29-násobku vstupného parametra šírka.

Vykreslenie rámov (procedúry ram a ram2) vyžaduje použitie rovnakých parametrov, pričom šírka rámu zodpovedá šírke obdĺžnika, jeho dĺžka predstavuje 28-násobok parametra šírka.

Ostáva vykresliť obdĺžniky vo vnútri hracej plochy. Okrem parametra šírka obdĺžnika potrebujeme ako vstupný parameter dve rôzne farby. Plochu si vieme rozdeliť na 4 rovnaké časti (štvrtiny). V každej štvrtine vykresľujeme tri obdĺžniky jednej farby a tri obdĺžniky duhej farby. Keďže dva oproti sebe umiestnené obdĺžniky sú od seba vzdialené o päťnásobok šírky obdĺžnika a výška hracej plochy je 27-násobok šírky obdĺžnika, tak výška jedného obdĺžnika bude 11-násobok jeho šírky.

Ostáva nám už len jednotlivé štvrtiny správne vyskladať na hracej ploche.

plocha

Nasleduje moľné riešenie v jazyku Imagine.

#imagine
viem plocha :sirka :farba
   nechFP :farba
   polygon [
     opakuj 4 [
       dopredu (29 * :sirka)
       vlavo 90
     ]
   ]
koniec

viem obdlznik :dx :dy :farba
   nechFP :farba
   polygon [
     opakuj 2 [
       dopredu :dx
       vlavo 90
       dopredu :dy
       vlavo 90
     ]
   ]
koniec

viem ram :sirka :farba
   opakuj 4 [
     obdlznik 28 * :sirka :sirka :farba
     dopredu 29 * :sirka
     vlavo 90
   ]
koniec

viem ram2 :sirka :farba
   vlavo 90
   obdlznik 27 * :sirka :sirka :farba
koniec

viem stvrtina :dx :farba1 :farba2
   dopredu :dx
   opakuj 3 [
     obdlznik :dx 11 * :dx :farba1
     dopredu 2 * :dx
     obdlznik :dx 11 * :dx :farba2
     dopredu 2 * :dx
   ]
   vlavo 90
   dopredu 27 * :dx
   vlavo 90
koniec

viem polovica :dx :farba1 :farba2
   opakuj 2 [
     stvrtina :dx :farba1 :farba2
   ]
koniec

viem cela :dx :farba1 :farba2
   polovica :dx :farba1 :farba2
   dopredu 14 * :dx
   polovica :dx :farba1 :farba2
koniec
viem vykresli
   znova
   nechPoz [-240 -240]
   zmaz
   vpravo 90
   plocha 10 "oranzova8
   ram 10 "hneda4
   dopredu 10
   vlavo 90
   dopredu 10
   vpravo 90
   cela 10 "hneda "cierna
   ram2 10 "hneda4
koniec

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

Úlohu riešili 4 tímy. Väčšina riešení bola správna, iba 2 tímy použili prácu s podprocedúrami. Striedajúce sa farby a vzdialenosti obdĺžnikov boli správne v každom riešení. V jednom tíme sa vyskytla chyba s nesprávne použitou operáciou delenia, ktorá spôsobila chybu pri práci s parametrami.