Autorské riešenie
[stiahni imp : py]

  • Počet riešiteľov: 19 / 30 =  63%                       

  • Úspešnosť riešenia: 2,84 / 4 = 71%                   

Na vyriešenie tejto úlohy bolo nutné vytvoriť všetky možné kombinácie z dvoch zadaných vstupných génov. Každý vstupný gén mal 2 zložky. Každá zložka bola buď číslo 1 alebo čislo 0.

Riešenie teda záviselo aj od toho, aký spôsob zadávania vstupných parametrov sme si zvolili. Vstup mohli byť 4 čísla, dvojice čísel či dvojprvkové zoznamy. Najprehľadnejšie je riešenie s použitím dvoch 2-prvkových zoznamov, ale aj ostatné prístupy sú samozrejme správne.

V prvom rade, a to platí pre akýkoľvek typ vstupu, platí nasledujúci vzťah:
 Ak m je časť génu matky a o je časť génu otca, tak platí:
   ak m+o = 0, tak m=0 a o=0 a teda pancier bude zelený
   ak m+o = 1, tak (m=0 a o=1) alebo (m=1 a o=0), teda pancier bude modrozelený
   ak m+o = 2, tak m=1 a o=1, teda pancier bude modrý

Nech naše vstupy teda sú 2 zoznamy: genM a genO. Vzhľadom na predchádzajúci vzťah nám stačí použiť 2 cykly, pomocou ktorých prejdeme oboma zoznamami a spočítame súčet pre jednotlivé kombinácie.

Teda vytvoríme prvý cyklus, ktorý bude prechádzať zoznamom genM a následne v ňom vytvoríme druhý cyklus, ktorý bude prechádzať zoznamom genO. Teda každý prvok zoznamu genM takýmto spôsobom spárujeme s každým prvkom zoznamu genO. Následne urobíme súčet pre každú vytvorenú kombináciu. Na základe súčtu potom vieme povedať aký pancier by mohla korytnačka mať. Pre každú zistenú farbu výsledok vypíšeme.

;Imagine logo
viem zistiFarbu :genM :genO
  prePrvky "m :genM [
   prePrvky "o :genO [
    akJe :m + :o [
     0 [zo "zelena]
     1 [zo "modra]
     2 [zo "modrozelena]
    ]
   ]
  ]
  koniec

 

#Python
def zistiFarbu(genM, genO):
    '''
    Funkcia vypise vsetky mozne farby panciera korytnacky,
    ak jej rodicia maju farby genM, genO

    :param genM: 2-prvkovy zoznam farieb korytnacej mamy obsahujuci prvky
     z mnoziny {0,1}, 0=zelena, 1=modra
    :type genM: list

    :param genO: 2-prvkovy zoznam farieb korytnacieho otca obsahujuci prvky
     z mnoziny {0,1}, 0=zelena, 1=modra
    :type genO: list

    :return: None
   '''
    for i in genM:
        for j in genO:
            if i + j == 0:
                print("zelena")
            elif i + j == 1:
                print("modrozelena")
            else:
                print("modra")


if __name__ == "__main__":
    print("Farby: 0=zelena, 1=modra")
    genM = input("zadaj farby korytnacej mamy, napr: 1,0: ")
    genM = [int(x) for x in genM.split(",")]
    genO = input("zadaj farby korytnacieho otca, napr: 1,0: ")
    genO = [int(x) for x in genO.split(",")]
    zistiFarbu(genM, genO)
	

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

Častá chyba, ktorá sa vyskytovala bolo nesprávne pochopenie zadanie. Miesto 2 génov s 2 časťami, ste ako vstup očakávali už dané časti génov rodičov a na základe nich ste vypísali farbu. Viacerí sa taktiež ani nepokúsili nad úlohou pouvažovať, ale krvopotne vypísali všetky kombinácie, ktoré môžu nastať.