Autorské riešenie
[stiahni imp : py]

  • Počet riešiteľov: 6 / 7 = 86%

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

Pri doprogramovaní procedúry kresliCislo bolo potrebné vykonať nasledujúce kroky:

  • otestovať, či číslo je najviac päťciferné,
  • rozbiť číslo na jeho cifry,
  • určiť kódovanie cifier na počítadle,
  • vykresliť päť žliabikov s jednotlivými ciframi.

Pri testovaní počtu cifier bolo možné použiť príkazy pocet :cislo (v jazyku Imagine) alebo len(str(cislo) (v jazyku Python). Rozbitie čísla na jeho cifry bolo vhodné vykonať pomocou cyklu, v ktorom postupne osekávame číslo vykreslením poslednej cifry. Ak je cifra väčia ako štyri, počet posunutých kamienkov zhora je jeden a počet posunutých kamienkov zdola je rovný cifre zmenšenej o číslo 5. Ak je cifra menšia alebo rovná ako štyri, tak zhora kamienok nepresúvame a počet kamienkov posunutých zdola je rovný samotnej cifre. Vykreslenie žliabika už bolo naprogramované, bolo postačujúce vhodne nastaviť medzery medzi týmito žliabikmi.

Nasledujú možné riešenia v jazyku Imagine Logo a Python.

;Imagine logo
viem kresliCislo :cislo
   znova
   skry
   ak2 pocet :cislo > 5 [
     pis "|Cislo sa neda zobrazit.|
   ]
   [
     opakuj 5 [
       urobTu "cifra zvysok :cislo 10
       urobTu "cislo cpodiel :cislo 10
       ak2 :cifra > 4 [
         kresliCifru (:cifra - 5) 1
       ]
       [
         kresliCifru :cifra 0
       ]
       vl 90
       do 50
       vp 90
     ]
   ]
koniec

 

#python

import turtle
# vykresli cele cislo
def kresliCislo(cislo):
   '''
   :param cislo - cele cislo
   :type int
   '''

   kor.hideturtle()
   if len(str(cislo))>5:
     print("Cislo sa neda zobrazit")
   else:
     for i in range(5):
       cifra = cislo % 10
       cislo //=10
       if cifra > 4:
         kresliCifru(cifra-5, 1)
       else:
         kresliCifru(cifra,0)
       kor.left(90)
       kor.forward(50)
       kor.right(90)

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

Úlohu riešilo 6 tímov, všetky v jazyku Imagine. Dva tímy vyriešili úlohu správne. V niektorých riešeniach chýbalo testovanie, či číslo je najviac päťciferné. Niektoré tímy nesprávne previedli kódovanie cifier na počty posunutých kamienkov zhora a zdola. Viacerým tímom chýbalo rozbitie čísla na cifry, prípadne na toto rozbitie nepoužívali cyklus.