Autorské riešenie [stiahni]
Celý obrázok si rozdelíme na dve častí. Prvú časť tvorí trojuholník, v ktorom sú postupne v stĺpcoch vpravo striedavo vysadené žlté a modré šaláty. Druhú časť tvorí trojuholník, v ktorom sú postupne v riadkoch nad striedavo vysadené žlté a modré šaláty.
Na vykreslenie prvého trojuholníka použijeme príkaz opakovania s počtom opakovaní N. V tele príkazu opakovania vykreslíme v stĺpci toľko šalátov, aká je hodnota počítadla. Pred vykreslením šalátov striedavo nastavíme farbu pera. Dosiahneme to pomocou operácie mod (zvyšok po delení), ktorá postupne pre výraz mod pocitadlo 2 vypisuje zvyšky po delení počítadla číslom 2, t. j. 1, 0, 1, 0 , 1, 0 ... Podobným spôsobom vykreslíme druhý trojuholník.
Výsledný príkaz saď môže vyzerať nasledovne:
viem saď :n
;vykreslenie prvej casti políčka - trojuholník šalátov vykresľovaný po stĺpcoch vpravo od východiskovej pozície
ph
opakuj :n [
ak2 mod pocitadlo 2=0
[nechFp "modra]
[nechFp "zlta]
opakuj pocitadlo [
bod 10
do 10
]
vz 10*pocitadlo
vp 90
do 10
vl 90
]
;presunutie sa do ľavého dolného rohu políčka
vl 90
do 10*:n
vp 180
;vykreslenie druhej casti políčka - trojuholník šalátov vykresľovaný po riadkoch nahor od východiskovej pozície
opakuj :n [
ak2 mod pocitadlo 2=0
[nechFp "modra]
[nechFp "zlta]
opakuj pocitadlo [
bod 10
do 10
]
vz 10*pocitadlo
vl 90
do 10
vp 90
]
;presunutie sa do ľavého dolného rohu políčka - do východiskovej pozície
vp 90
do 10*:n
vl 180
pd
;vypísanie celkového počtu šalátov
(pis "|celkový počet zasadených šalátov je | :n*:n)
koniec
Tento príkaz môžme vylepšiť tak, že nebudeme prekresľovať dvakrát tie isté body.
Vaše zaujímavé riešenia a najčastejšie chyby
Najčastejšie nedostatky, ktorých ste sa dopustili vo svojich riešeniach:
-
Úlohu riešilo 22 tímov. Väčšina riešení bola správnych.
Niektorí ste použili pri vykresľovaní šalátov
príkazy nechPoz, domov, pri ktorých si treba
uvedomiť, že nám neumožnia nakresliť políčko otočené o nejaký
uhol, prípadne z inej pozície ako vopred
nastavenej pozície. Väčšina z vás sa postarala o
prepínanie farieb pomocou podmieneného príkazu ak2.
Niektorí v ňom priamo menili hodnoty
farieb, iní použili pomocnú premennú, ktorej
hodnota sa menila ako v prepínači. Tím Béčka vyriešil
úlohu pomocou rekurzie. Niektoré vaše riešenia neboli veľmi úhľadne
upravené. Kvôli lepšej čitateľnosti programu odporúčame vám nepísať
dlhé riadky programu, používať zarovnanie príkazov pod sebou,
odsadzovať príkazy, ktoré sú v tele cyklu. Slušní programátori
uvádzajú komentáre k jednotlivým častiam programu. Rovnako
odporúčame, aby ste namiesto globálnych
premenných používali lokálne premenné (t.j.
príkaz UROBTU namiesto príkazu UROB). Ak máte viac globálnych
premenných a viacero procedúr, ľahko sa vám môže stať, že nechtiac
zmeníte v niektorej procedúre obsah globálnej premennej. Potom sa
chyby v programe veľmi ťažko hľadajú.
|