Mała lekcja genetyki
Kiedy masz dostęp tylko do widocznych cech lub fenotypu danej osoby, rodowód z jej historii rodzinnej jest często wykorzystywany do ustalenia faktycznej informacji genetycznej lub genotypu każdego członka rodziny.
Gdy mamy do czynienia z prostą dominacją, jaką będziemy, wystarczy prosty wykres rodowodowy, aby obliczyć allele lub wersję genów, które mają, każdej osoby. W zwykłej dominacji osoba z dominującym allelem (oznaczona wielką literą) zawsze będzie miała cechę, którą reprezentuje ta wersja, bez względu na inny allel. Wyrażenie tej wersji wymaga dwóch recesywnych alleli (oznaczonych małą literą). Innymi słowy, dominujący allel zawsze maskuje recesywną wersję tego genu. Oto przykład schematu rodowodowego:
Każdy rząd tutaj jest pokoleniem. Kręgi to kobiety, kwadraty mężczyzn, poziome linie to małżeństwo, pionowe linie dzieci. Dość proste. Czarny oznacza fenotyp recesywny, biały, dominujący. Zaczynając od góry (zakładając, że allele są A
i a
), wiemy, że osoba 2 ma aa
homozygotyczny recesywny, ponieważ jest to jedyna możliwa opcja fenotypu recesywnego. Teraz, mimo że osoba może być fenotypem dominującym Aa
albo AA
być dominującym, ponieważ ma recesywne dziecko, musi być Aa
heterozygotyczna. Możesz to zrobić dla wszystkich innych ludzi. W przypadku nie masz żadnych informacji, które pozwala, aby dowiedzieć się drugi allel, można to zrobić tak: A_
.
Twoje zadanie
- Otrzymasz wykres rodowy w formie listy pokoleń, jak
[GenI, GenII, etc.]
w dowolnym rozsądnym formacie. - Każde pokolenie będzie listą ciągów, przy czym każdy ciąg reprezentuje osobę.
- Ludzie składają się z trzech części - identyfikatora, ich fenotypu i „powiązań”.
- Ich identyfikator to pojedyncza postać ascii do wydrukowania, która jest unikalna w całym drzewie innym niż
A
luba
. (Nie, na wykresie nie będzie więcej niż 95 osób). - Ich fenotyp jest jednym
A
alboa
,A
będąc allel dominujący ia
jest recesywny. - Ich połączenia są sekwencją identyfikatorów innych osób, z którymi mają powiązania.
- Związkiem w tym samym pokoleniu jest małżeństwo, w różnych pokoleniach dziecko i rodzic.
- Połączenia są powtarzane po obu stronach (tj. Mąż powiedział, że jest mężem żony, a żona mówi, że jest mężem żony).
- Musisz jak najwięcej dowiedzieć się o genotypach wszystkich.
- Zwróć tę samą listę, z wyjątkiem tego, że zamiast ludzi umieść swoje genotypy w tej samej pozycji.
- Genotyp musi być wyprowadzany w takiej kolejności, a
Aa
nieaA
. - Trochę swobody w zakresie formatu wejściowego jest w porządku.
- To jest golf golfowy, więc wygrywa najkrótsza odpowiedź w bajtach .
Przykłady
[["0A1234", "1a0234"], ["2A01", "3a01", "4A015678",
"5a4678"], ["6a45", "7A45","8A45"]] (The one above) ->
[["Aa", "aa"], ["Aa", "aa", "Aa", "aa"], ["aa", "Aa", "Aa"]]
[["0A12", "1A02"], ["2A301", "3a2"]] ->
[["A_", "A_"], ["A_", "aa"]]
Premia
- -30 bajtów, jeśli masz również do czynienia z niekompletnością i współdominacją . Po wykryciu trzech fenotypów zamiast dwóch na całym wykresie zastosuj niekompletną / ko-dominację w swoim algorytmie.
A
ia
i zostawić identyfikatory i połączenia jak jest (czyli[["0A12","1A02"],["2A301","3a2"]]
staje się[["0A_12","1A_02"],["2A_301","3aa2"]]
zamiast[["A_","A_"],["A_","aa"]]
)?