Autorské riešenie
[stiahni imp : py]                                       

  • Počet riešiteľov: 8 / 9 = 89 %                       

  • Úspešnosť riešenia: 2.25 / 5 =  45%                   

Pri riešení úlohy pracujeme s premennou zoznam, ktorá je zoznamom kladných čísel, ktoré sú veľkosťami kotúčov navlečených na tyč. Veľkosti sú v zozname v takom poradí, a akom boli kotúče navlečené na tyč. Chceme zistiť, koľko kotúčov je viditeľných pri pohľade zhora. Ak na vrchu vidíme kotúč s veľkosťou N, tak vieme povedať, že do výsledného počtu viditeľných kotúčov nezarátame žiaden další kotúč, ktorý má veľkosť najviac N. Teda, treba sa na vežu pozrieť zhora.

Pohľad na vežu zhora znamená v programátorskej reči prácu s daným zoznamom v opačnom poradí. Na začiatku si teda zoznam prevrátime. Na začiatku si pamätajme veľkosť zatiaľ najväčšieho kotúča ako maximum a nech je to na začiatku nula. Postupne prechádzame všetkými prvkami už prevrátného zoznamu a zisťujeme, či je aktuálna veľkosť kotúča väčšia, ako doterajšie maximum. Ak je väčšia, uložíme si danú veľkosť do premennej maximum a premennú pocet zvýšime o 1. Takto prejdeme celý zoznam.

Na obrázku nižšie môžeme vidieť, že aj keď veža pozostáva zo 6 kotúčov, zhora môžeme vidieť len 4.

veza

;Imagine logo

viem spocitaj_viditelne :zoznam_kotucov
  urobTu "zoznam_kotucov prevráť :zoznam_kotucov
  urobTu "maximum 0
&  urobTu "pocet 0

  prePrvky "kotuc :zoznam_kotucov[
    ak :kotuc > :maximum[
      urobTu "maximum :kotuc
      urobTu "pocet :pocet + 1
    ] br>  ]
  výsledok :pocet

koniec

 

def spocitaj_viditelne(zoznam_kotucov):
    ''' Vráti počet kotúčov na tyči, ktoré sú viditeľné pri pohľade zhora.
 
    :param zoznam_kotucov: zoznam veľkostí kotúčov
    :type zoznam_kotucov: list of float
    :return: počet kotúčov
    :rtype: int
    '''
 
    zoznam_kotucov.reverse()
    maximum = 0
    pocet = 0
 
    for kotuc in zoznam_kotucov:
        if kotuc > maximum:
            maximum = kotuc
            pocet = pocet + 1
 
    return pocet

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

Zaujímavým, no nie správnym krokom bolo použitie vlastného zoznamu - reťazca, ktorý obsahoval veľkosti kotúčov oddelené dvojbodkou.
Ďalším zaujímavým riešením bolo to, ktoré sa snažilo simulovať hru dvoch tímov, generovalo veľkosti pridávaných kotúčov, no nespĺňalo požiadavky zadania. Nabudúce sa radšej držte presne zadaním.

Ďalšou častou chybou bolo načítavanie vstupných dát - veľkostí kotúčov cez konzolu v tele procedúry/funkcie. Vstupné dáta mala procedúra/funkcia dostať pomocou vhodného parametra.
Globálne premenné používajte len v prípade nevyhnutnosti.
Veľmi častou chybou bola práca so zoznamom v pôvodnom poradí, čo viedlo k nesprávnym výsledkom.