Autorské riešenie
[stiahni py]                                       

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

  • Úspešnosť riešenia:  4.25 / 5 = 85 %                   

Keďže obchodný dom predáva štyri typy tovarov, na začiatku tejto úlohy máme zoznam obsahov nákupných košíkov, napríklad [['A','B'],['B','C','D'],['A','B','C'],['A','D'],['A','C','D'],['B','D'],['A','B','D']].

Ak chceme spočítať spoľahlivosť pravidla A → B, ako prvý krok spočítame počet nákupných košíkov, ktoré obsahujú položku A. V našom prípade to bude päť košíkov.

V druhom kroku spočítame počet nákupných košíkov, ktoré obsahujú položky A a B súčasne. V našom prípade to budú tri košíky.

V poslednom treťom kroku vydelíme čísla, ktoré sme dostali v prvom a druhom kroku. Teda v našom prípade dostaneme 3/5 = 0,6. To znamená, že spoľahlivosť pravidla A → B je 60 %, teda ak si človek kúpi položku A, tak v 60 % si kúpi aj položku B.

Poznámka na záver: Ako je vidieť, tak v prípade, ak sa položka A nenachádza ani v jednom košíku, nie je možné danú spoľahlivosť vypočítať podľa predchádzajúceho postupu. V takom prípade je dobré uviesť, že spoľahlivosť nie je možné vypočítať (None) alebo generovať výnimku.

Nasleduje možný zdrojový kód v jazyku Python:

def pocitaj_spolahlivost(nakupne_kosiky, A, B):
    kosiky_s_A = [kosik for kosik in nakupne_kosiky if A in kosik]
    kosiky_s_A_a_B = [kosik for kosik in kosiky_s_A if B in kosik]
    if len(kosiky_s_A) == 0:
        return None
    spolahlivost = len(kosiky_s_A_a_B) / len(kosiky_s_A)
    return spolahlivost

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

Úlohu riešili všetky štyri tímy v kategórii expert. Väčšina tímov použila správny postup na dosiahnutie vhodného riešenia a využilo 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, výpočet počtu košíkov s jednou položkou. Ale niektoré tímy nesprávne vypočítali počet košíkov s dvoma položkami alebo výslednú spoľahlivosť pravidla.