Autorské riešenie
Úlohou je spracovať záznamy z aplikácie, v ktorej boli stláčané tlačidlá podľa aktuálnej premávky. Aplikácia posiela záznamy v tvare zoznamu a to napríklad: ['o','s','n','i','s','o','h','o','s','o','h','o'] Jedným z riešení je použiť štruktúru zásobník. Pri prvom prechode zoznamom si do neho zapisujeme jednotlivé vozidlá príkazom append(). Ak sa vyskytne storno tlačidlo, zo zásobníka vyberieme poslednú vloženú hodnotu príkazom pop(). Takto dostaneme zoznam všetkých platných údajov. Napokon už len stačí povedať, čo so správnymi údajmi treba spraviť. V tomto prípade spočítať výskyty daných písmen a výsledok vrátiť.
#python def spocitajVozidla(zoznam): '''Analyzuje zaznam vozidiel, ktore presli danym usekom a vrati pocty jednotlivych typov. :param zoznam: zoznam dopravných prostriedkov :type zoznam: list :return: pocty jednotlivych typov vozidiel v poradi: osobne, nakladne, hromadna, ine :rtype: tuple ''' # 1. časť - prechod zoznamom - na odstránenie vystornovaných údajov spravne = [] # spravne je typu zoznam for hodnota in zoznam: if hodnota == 's': if spravne != []: # iba ak nie je prazdne spravne.pop() else: spravne.append(hodnota) # 2. časť - vyhodnotenie zaznamenaných údajov osobne = spravne.count('o'); nakladne = spravne.count('n'); hromadna = spravne.count('h'); ine = spravne.count('i'); return osobne, nakladne, hromadna, ine Vaše zaujímavé riešenia a najčastejšie chyby Do riešenia úlohy sa pustilo 10 tímov. Niektoré tímy požadovali vstup v tvare zoznamu, niektoré v tvare string. Všetci pracovali na riešení úlohy len cez jeden prechod zoznamom. Niektorým sa to skoro podarilo, avšak väčšina neošetrila všetky možné vstupy. Často boli tímy dôverčivé a zabudli na možnosť, že chceme stornovať prázdny zoznam, resp. neexistujúcu hodnotu. Najčastejšie bolo v takom prípade storno použité na nasladujúcu hodnotu. Napríklad záznam ['s', 'o', 'o'] bol vyhodnotený rovnako, ako ['o'], teda že tam prešlo iba jedno osobné auto, čo nie je správny výsledok. Vyskytlo sa aj riešenie, ktoré pripúšťalo záporný počet vozidiel pri určitom vstupe. Napríklad pri vstupe " s o i " im vyšlo, že prešli 2 osobné autá a -1 iných áut. Všetky tímy vypisovali vypočítané hodnoty napriek tomu, že funkcia ich mala vrátiť, aby sa s nimi dalo ďalej pracovať. Iba jeden tím vyriešil úlohu úplne správne, až na formát výstupu. |
||||||||||
© Univerzita Pavla Jozefa Šafárika v Košiciach, Prírodovedecká fakulta, Ústav informatiky palmaj (zavinac) upjs.sk |