Autorské riešenie
Na vstupe tejto úlohy máme hľadisko reprezentované pomocou zoznaum zoznamov výšok ľudí v jednotlivých radoch. Na výstupe by sme chceli získať opäť zoznam zoznamov rovnakej dimenzie, v ktorom si uchováme informáciu o tom, ktorí ľudia majú nárok na zľavu z dôvodu, že v niektorom rade pred nimi sedí vyšší návštevník. Riešenie tejto úlohy môže byť založené na postupnom prechode stĺpcov tohto zoznamu zoznamov. Zapíšeme si pozíciu stĺpca, ktorý ideme vyhodnotiť. Následne pomocou for cyklu prejdeme všetky sedadlá v nasledujúcich radoch a otestujeme, či výška diváka v ďalšom rade je menšia ako výška doposiaľ najvyššieho diváka v tomto stĺpci. Na obrázku nižšie je znázornený príklad, v ktorom je výsledkom porovnania zľava pre diváka, lebo výška s hodnotou 1 je menšia ako výška s hodnotou 2.
Ak zistíme, že výška diváka nie je menšia ako doposiaľ najvyššieho diváka v danom stĺpci, zapíšeme si novú pozíciu do premennej nazvanej napríklad porovnavana_pozicia. Nasleduje možný zdrojový kód v jazyku Python: def urci_zlavy(hladisko): """ :param hladisko: zoznam vysok v celom hladisku. :type: list[list] :return: zoznam zliav v celom hladisku. :rtype: list[list] """ zlava = [[False for _ in range(len(hladisko[0]))] for _ in range(len(hladisko))] for sedadlo in range(len(hladisko[0])): # v nultom rade nebude žiadna zľava zlava[0][sedadlo] = False # zapíšeme si pozíciu stĺpca, ktorý ideme vyhodnotiť porovnavana_pozicia = hladisko[0][sedadlo] for i in range(1, len(hladisko)): if hladisko[i][sedadlo] < porovnavana_pozicia: zlava[i][sedadlo] = True else: # divák je vyšší ako doposiaľ najvyšší v predchadzajúcich radoch, # teda si ho zapamätáme porovnavana_pozicia = hladisko[i][sedadlo] # a nedáme mu zľavu zlava[i][sedadlo] = False return zlava Vaše zaujímavé riešenia a najčastejšie chyby Úlohu riešilo 12 tímov v kategórii expert aj guru. Väčšina tímov použila správny postup na dosiahnutie vhodného riešenia a využilo aj postup uvedený v autorskom riešení. Viaceré riešenia boli výborne okomentované. Vo všetkých riešeniach tímy správne určili parametre funkcie.
|
||||||||||
© Univerzita Pavla Jozefa Šafárika v Košiciach, Prírodovedecká fakulta, Ústav informatiky palmaj (zavinac) upjs.sk |