Autorské riešenie
Vstupom pre túto úlohu boli dva rovnako dlhé reťazce výsledkov PCR a antigénového testu (znak P predstavuje pozitívny výsledok, znak N negatívny). Pre určenie správneho riešenia bolo potrebné postupne skontrolovať všetky znaky PCR a antigénového testu na rovnakých pozíciách. Na každej pozícii môžu nastať vo všeobecnosti 4 situácie:
Ak súčasným prechodom oboch reťazcov s výsledkami spočítame počty TP, FN, FP a TN, výsledné ukazovatele výkonnosti už vypočítame ľahko:
Nasleduje možný zdrojový kód v jazyku Python: def vykonnost_testu(pcr, antigen): pocet_skutocne_pozitivnych = 0 pocet_falosne_negativnych = 0 pocet_falosne_pozitivnych = 0 pocet_skutocne_negativnych = 0 for i in range(len(pcr)): if (pcr[i] == 'P' and antigen[i] == 'P'): pocet_skutocne_pozitivnych += 1 elif (pcr[i] == 'P' and antigen[i] == 'N'): pocet_falosne_negativnych += 1 elif (pcr[i] == 'N' and antigen[i] == 'P'): pocet_falosne_pozitivnych += 1 else: pocet_skutocne_negativnych += 1 relativna_citlivost = round( pocet_skutocne_pozitivnych * 100 / (pocet_skutocne_pozitivnych + pocet_falosne_negativnych), 2) relativna_specifickost = round( pocet_skutocne_negativnych * 100 / (pocet_skutocne_negativnych + pocet_falosne_pozitivnych), 2) celkova_zhoda = round( (pocet_skutocne_pozitivnych + pocet_skutocne_negativnych) * 100 / len(pcr), 2) return relativna_citlivost, relativna_specifickost, celkova_zhoda Vaše zaujímavé riešenia a najčastejšie chyby Úlohu riešilo 47 tímov. Väčšina tímov použila správny postup na dosiahnutie vhodného riešenia a využilo postup uvedený v autorskom riešení. Niektoré tímy si vytvorili vlastné pomocné funkcie pre načítanie vstupov. Viaceré riešenia boli výborne okomentované. V niektorých riešeniach chýbal súčasný prechod reťazcami pri určovaní pozitívnych a negatívnych príkladov, pričom bolo potrebné vypočítať, kedy sú pozitívne oba testy súčasne (PCR=Antigen=true) a tiež kedy sú negatívne oba testy súčasne (PCR=antigen=false). Následne by boli správne vypočítané aj hodnoty relatívnej citlivosti, špecificity a celkovej zhody podľa zadania. Dva tímy namiesto reťazcov použili na vstupe iba konštantne zadané hodnoty počtu pozitívnych, či negatívnych príkladov. Niektoré tímy počítali citlivosť z celkového počtu všetkých testov, pričom správne by sa mala počítať iba z celkového počtu pozitívnych PCR testov. |
||||||||||
© Univerzita Pavla Jozefa Šafárika v Košiciach, Prírodovedecká fakulta, Ústav informatiky palmaj (zavinac) upjs.sk |