Autorské riešenie
[stiahni]

obrazok pola s dvoma typmi salatov

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.

salaty vysadene v tvare trojuholnika        obrazok so salatmii vysadenymi do tvaru trojuholnika

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ú.