Autorské riešenie
[stiahni imp : py]                                       

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

  • Úspešnosť riešenia: 5,29 / 6 = 88%                   

Riešenie tejto úlohy pozostáva z dvoch častí. Najprv je potrebné si zvoliť vhodnú dátovú reprezentáciu pre DNA profil. Keďže podľa predloženého obrázku vzorka pozostáva z plných a prázdnych miest, najjednoduchšie kódovanie bude použitím 0 (svetlá farba) a 1 (tmavá farba), čím nám vznikne buď 15-miestny reazec alebo 15-prvkový zoznam.

DNA profil - kódovanie

 

Samotný algoritmus riešenia predstavuje postupný prechod cez všetky prvky oboch reťazcov alebo zoznamov a ich porovnanie. Ak sa na tej istej pozícii nachádzajú rovnaké znaky, zvýšime hodnotu počítadla. Napokon je potrebné ešte určiť aj mieru zhody oboch vzoriek, čo vypočítame ako podiel počtu rovnakých znakov a počtu všetkých znakov a vynásobením 100, aby výsledok vyšiel v percentách.

;Imagine logo
viem porovnaj :a :b
  urobTu "pocetZhodnych 0
  opakuj pocet :a [
    ak prvok pocitadlo :a = prvok pocitadlo :b [
      zvys "pocetZhodnych
    ]
  ]
  vysledok 100 * :pocetZhodnych / pocet :a
koniec

 

Python
def porovnaj(a,b):
    '''
    Porovna zadane profily DNA zo zoznamu p2 so vzorkou p1 z miesta cinu a 
    vypíse meno pachatela a mieru zhody s povodnou vzorkou.

    :param a: retazec predstavujuci DNA profil vzorky z miesta cinu
    :type a: list or str
    :param b: retazec predstavujuci DNA profil podozriveho
    :type b: list or str
    :return: miera zhody dvoch DNA profilov
    :rtype: float
    '''
    pocet=0
    for i in range(0, len(a)):
        if a[i]==b[i]:
            pocet+=1
    return 100 * pocet / len(a)

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

V úlohe sa nevyžadovalo, ale niektorí riešitelia zabezpečili ošetrenie vstupov. Bolo to možné urobiť jednak porovnaním dĺžok oboch DNA profilov, jednak testom na prítomnosť iného znaku než 0 alebo 1, prípadne testom na prázdny vstup (pre prípad, že užívateľ nezadal žiadne vstupné hodnoty parametrov funkcie).

Pri riešení úloh v Imagine logu bolo častou chybou len vypísanie miery zhody, nie jej návrat. V takomto prípade by bolo problematické ďalšie spracovanie (môžeme chcieť porovnať viacero podozrivých a vyhodnotiť, kto by bol najpravdepodobnejším páchateľom).