Autorské riešenie
[stiahni py]                                       

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

  • Úspešnosť riešenia: 3,78 / 7 =  54%                   

Ú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.