Autorské riešenie
[stiahni]

Po klepnutí na tlačidlo "STOP" sa striedanie kartičiek na chvíľu pozastaví a počty vyškerencov na kartičkách sa uložia do premennej stav. Premenná stav je zoznam a jej hodnota môže vyzerať napr. takto: [7 4 6]. Keď sme striedanie kartičiek pozastavili, tak na prvej kartičke bolo sedem vyškerencov, na druhej štyria vyškerenci a na tretej šiesti. Aby sa nám s číslami zo zoznamu pracovalo ľahšie, môžeme si ich uložiť do premenných.

 

urobtu "a prvok 1 :stav
urobtu "b prvok 2 :stav
urobtu "c prvok 3 :stav

Ostáva otestovať, aké hodnoty sú v premenných a, b, a. Podľa toho pridelíme body. 

Najskôr môžeme testovať, či počty vyškerencov sú šťastné čísla. Aby sa nám ľahšie testovalo, vytvoríme si zoznam šťastných čísiel. Otestujeme, či počty vyškerencov na kartičkách patria medzi šťastné čísla. Ak áno, hodnotu textového políčka text1 zvýšime o 15 bodov.

urobtu "stastne [2 3 5 7]
ak2 (zaroven prvok? :a :stastne prvok? :b :stastne prvok? :c :stastne)
    [text1'nechhodnota text1'hodnota + 15]

Ak počty vyškerencov nie sú šťastné čísla, otestujeme či tvoria postupnosť za sebou idúcich šísel. Rastúcu alebo klesajúcu. V prípade úspechu pripočítame k hodnote textového políčka text1 10 bodov.

ak2 zaroven (:a+1=:b) (:b+1=:c) 
    [text1'nechhodnota text1'hodnota + 10]
    [ak2 zaroven (:a-1=:b) (:b-1=:c)
         [text1'nechhodnota text1'hodnota + 10]

Ak počty netvoria žiadnu z postupnosti, poslednou šancou ako získať nejaké body je, že počty vyškerencov boli na všetkých kartičkách rovnaké.

ak2 zaroven (:a=:b) (:b=:c) 
    [text1'nechhodnota text1'hodnota + 5]
    [text1'nechhodnota text1'hodnota - 5]

Ak nenastala ani táto situácia, hráč stráca 5 bodov.

Celá procedúra vyzerá takto:

viem vyhodnot
  urobtu "a prvok 1 :stav
  urobtu "b prvok 2 :stav
  urobtu "c prvok 3 :stav
  urobtu "stastne [2 3 5 7]
  ak2 (zaroven prvok? :a :stastne prvok? :b :stastne prvok? :c :stastne)
      [text1'nechhodnota text1'hodnota + 15]
      [ak2 zaroven (:a+1=:b) (:b+1=:c) 
           [text1'nechhodnota text1'hodnota + 10]
           [ak2 zaroven (:a-1=:b) (:b-1=:c)
                [text1'nechhodnota text1'hodnota + 10]
                [ak2 zaroven (:a=:b) (:b=:c) 
                     [text1'nechhodnota text1'hodnota + 5]
                     [text1'nechhodnota text1'hodnota - 5]
                ] 
           ] 
      ]
koniec

Určite ste si však všimli, že niekedy môžu byť splnené dve podmienky. Napr. pri počtoch [2 2 2] sme trafili šťastné čísla a zároveň všetky počty sú rovnaké. Takže hráč by mal získať  15 + 5 = 20 bodov. Aj tento postup je správny. Vtedy by testy na šťastné číslo a rovnaké nemali byť vnorené, ale za sebou. Riešenie môže vyzerať takto:

viem v
  urobtu "a prvok 1 :stav
  urobtu "b prvok 2 :stav
  urobtu "c prvok 3 :stav
  urobtu "stastne [2 3 5 7]
  urobtu "bodoval "nie

  ak (zaroven prvok? :a :stastne prvok? :b :stastne prvok? :c :stastne)
     [text1'nechhodnota text1'hodnota + 15
      urobtu :bodoval "ano
     ]

  ak2 zaroven (:a+1=:b) (:b+1=:c) 
      [text1'nechhodnota text1'hodnota + 10
       urobtu "bodoval "ano
      ]
      [ak2 zaroven (:a-1=:b) (:b-1=:c)
           [text1'nechhodnota text1'hodnota + 10
            urobtu "bodoval "ano
           ]
           [ak zaroven (:a=:b) (:b=:c) 
               [text1'nechhodnota text1'hodnota + 5
                urobtu "bodoval "ano
               ]
           ]
      ] 

  ak nieje :bodoval [text1'nechhodnota text1'hodnota - 5]

koniec

Vaše zaujímavé riešenia

Zaujímavý spôsob testovania šťastných čísiel vymysleli v tíme Imagine Master Pali. Namiesto toho, aby testovali či číslo zo zoznamu je šťastné, testovali, či sa v zozname nenachádza "nešťastné" číslo.

Ak už máte spôsob, ako testovať rastúcu postupnosť za sebou idúcich čísiel, môžete ho použiť aj na testovanie klesajúcej postupnosti za sebou idúcich čísiel. Stačí poradie prvkov v zozname prevrátiť. Na toto prišli v tíme Imagine master Bear & Cat. Ich riešenie bolo zo všetkých najlepšie.

Najčastejšie chyby

Ak pracujete so zoznamami a často pristupujete k ich prvkom, niekedy je výhodnejšie si prvky uložiť do premenných. Ľahšie sa s nimi potom pracuje.

Pri úlohách, kde je potrebne testovať veľa situácií, si dávajte pozor aby ste na žiadnu z nich nezabudli, prípadne niektorú ohodnotili viac krát.