Autorské riešenie
[stiahni imp : py]

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

  • Úspešnosť riešenia:  4 / 5 = 80%

Úlohu o biohriadke je vhodné rozdeliť si na dve časti - kresliacu a výpočtovú. Aby sme úspešne vyriešili kresliacu časť, potrebujeme znázorniť päť sústredných polkružníc podľa rozmerov uvedených v zadaní. Na vykreslenie polkružnice v jazyku Imagine môžeme použiť príkaz elipsa, ktorý má 4 parametre: priemer horizontálnej časti elipsy, priemer vertikálnej časti elipsy, počiatočný a koncový uhol časti elipsy. V Pythone môžeme použiť príkaz kor.circle s dvoma parametrami: polomer kružnice a uhol, ak chceme vykresliť iba časť kružnice (napr. pre celú kružnicu zadáme 360, pre polkružnicu zadáme 180).

Ak začneme polkružnice vykresľovať od najväčšej, môžeme si všimnúť, že polomer polkružnice sa zmenšuje stále o 15 korykrokov. Preto môžeme v Imagine použiť cyklus opakuj a na skracovanie polkružníc použiť pocitadlo, alebo v Pythone cyklus for a jeho riadiacu premennú i. Je potrebné si uvedomiť, že kým v Imagine je pocitadlo číslované od hodnoty 1, Python čísluje riadiacu premennú i od hodnoty 0.

Pri výpočtovej časti je potrebné si uvedomiť, že vyhĺbená ryha pre biohriadku má tvar kvádra s parametrom dlzka, ktorý je vhodné definovať ako vstupný parameter procedúry vybuduj. Pri výpočte potrebného pletiva na vyloženie ryhy však zaratávame len dno ryhy a steny ryhy.

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

;Imagine logo
viem vybuduj :dlzka
   znova
   nechHP 2
   opakuj 5 [
     nechFV ?
     elipsa [(190 - (pocitadlo * 30)) (190 - (pocitadlo * 30)) -90 90]
  ]
  urobTu "obsahPletiva :dlzka * 160 + 2*15*:dlzka + 2*15*160
  vysledok :obsahPletiva
koniec

 

#Python

import turtle
kor = turtle.Turtle();
plocha = turtle.Screen();

def vybuduj(dlzka):
   '''
   :param dlzka - dlzka hriadky
   :type float
   :return celkový obsah potrebného pletiva
   :rtype: float
   '''

   for i in range(5):
     kor.circle(80-15*i,180)
     kor.left(90)
     kor.forward(160-30*i)
     kor.back(15)
     kor.left(90)
   kor.right(90)
   kor.back(5)
   kor.left(90)

   obsahPletiva = dlzka * 160 + 2*15*dlzka + 2*15*160
   return obsahPletiva

kor.left(90)
print(vybuduj(60.0))
plocha.mainloop();

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

Všetkých sedem tímov riešilo úlohu v jazyku Python.

Pri kreslení sústredných polkužníc ste využívali príkazy opakuj 180, bod, obrysKruhu alebo kruh. V niektorých riešeniach však nebolo dodržané rovnomerné rozloženie sústredných kružníc, v iných zase neboli správne nastavené rozmery (priemer nahradený polomerom a podobne).

Vo výpočtovej časti väčšina tímov pri výpočte potrebného počtu pletiva uviedla len obsah prednej a zadnej steny a teda neuvažovala o tom, že ak chceme vyložiť aj dno biohriadky, potrebujeme pracovať aj s dĺžkou biohriadky, ktorú je vhodné uvažovať ako vstupný parameter procedúry.

Jeden tím svoj program doplnil o úvodné menu, v ktorom bolo možné vybrať si z dvoch možností, či v záhradke máme alebo nemáme hrabošov, a teda či sa bude alebo nebude počítať aj množstvo potrebného pletiva.