Autorské riešenie
[stiahni]

Uvedieme jedno z mnohých riešení tejto úlohy. Na zistenie potrebnej dĺžky koberca, musíme zistiť šírku každého schodu a dĺžku medzi každými dvoma schodmi (výška schodu).
Zo zadania vyplýva, že sa výška nemení a teda celkový súčet výšok všetkých schodov môžeme napísať ako :vyskaSchodu * :pocetSchodov. Takto teda získame prvý potrebný údaj.
Potrebujeme však ešte zistiť súčet šírok všetkých schodov. Šírku prvého schodu získame zo vstupného parametra sirkaPrvehoSchodu. Zo zadania ďalej vyplýva, že každý ďalší schod je širší od predchádzajúceho práve o šírku prvého schodu. Vytvoríme si novú premennú (v našom prípade "sirkaSucet") a k nej budeme opakovane pripočítavať šírku schodu. Šírka schodu sa nám mení podľa toho, na ktorom schode sa nachádzame. Použijeme preto počítadlo schodov, aby sme vedeli, na ktorom schode sa nachádzame. Šírku prvého schodu teda vynásobíme údajom, ktorý nám vráti počítadlo a tak získame šírku daného schodu. Tieto šírky sčítame a získame druhý potrebný údaj.
Oba údaje sčítame a získame potrebnú dĺžku koberca na pokrytie všetkých schodov. Údaj necháme vypísať.

viem pocitajDlzkuKoberca :pocetSchodov :sirkaPrvehoSchodu :vyskaSchodu
  urobTu "vyskaSucet :vyskaSchodu * :pocetSchodov
  urobTu "sirkaSucet 0
  opakuj :pocetSchodov
  [
    urobTu "sirkaSchodu :sirkaPrvehoSchodu * pocitadlo
    urobTu "sirkaSucet :sirkaSucet + :sirkaSchodu
  ]
  pis :vyskaSucet + :sirkaSucet
koniec

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

Úlohu riešilo 16 tímov a polovica na plný počet. Jedno odovzdané riešenie malo aj grafickú úpravu. Zopár riešení bolo zaujímavých a jednoduchých. Najčastejšie chyby vznikali pri výpočte celkovej šírky. Mnohí zdvojnásobili šírku nasledujúceho schodu, pričom každý schod je od predchádzajúceho širší práve o sirkaPrvehoSchodu (vyplýva zo zadania). Chyby nastávali aj pri cykloch (boli ukončené skôr a preto neplnili svoju úlohu).V dvoch prípadoch ste zabudli vypísať výsledok.