Matura informatyka zbiór zadań. Zadanie 69 - Geny.

Kliknij i wspomóż mnie :)

Python

Wstęp

Arkusz z zadaniem znajdziesz tutaj:

Matura_Zbiór_zadań_Informatyka

Repozytorium z danymi i rozwiązaniem:

Github

Plik dane_gen.txt zawiera genotypy 1000 osobników z galaktyki Madgen. Każdy wiersz pliku zawiera genotyp jednego osobnika o długości nie większej niż 500 znaków.

Odczytywanie danych

Każda linijka zawiera genotyp osobnika. W tym genotypie występują fragmenty (geny) zwane częścią kodującą i otoczone są przez części niekodujące.

Już na wstępie postanowiłem żeby traktować cały genotyp i kodujące geny osobno. Te zapisywane są kolejno w tablicach genotypes oraz allGenes.

Znajdywanie genów

Ta funkcja odpowiada za zwracanie tablicy genów dla danego genotypu. Cała zasada polega na tym, że wczytywany jest ciąg znaków od AA aż nie napotka BB.

Ważne jest to, że nie bedą brane pod uwagę ciągi znaków, które nie mają zakończenia. To realizują ostatnie linijki w powyższym kodzie.

Algorytm ten jest obszerny i skomplikowany. Dobrze by było gdybyśmy mogli go jakoś przetestować. W Pythonie nawet bez bibliotek jest taka możliwość.

Pozwala na to funkcja assert. Porównuje ona wynik z oczekiwanym rezultatem. Wykorzystanie poniżej:

Liczba gatunków

Za pomocą zbioru (set) dodajemy kolejne gatunki. Zbiór zapewni to że będą się powtarzać.

Później w zbiorze dla każdego gatunku wyszukujemy ile jest takich samych gatunków (ta sama długość tekstu) w całej puli.

Występowanie ciągu

Występowanie w jakimkolwiek genie ciągu BCDDC oznacza mutację powodującą małą odporność osobnika na zmęczenie. Podaj, ile osobników spośród tych, których genotypy zapisane są w pliku, ma tę mutacje.

Za pomocą funkcji find algorytm jest dużo prostszy. Po prostu we wszystkich genach sprawdzamy czy występuje ciąg i jeżeli został znaleziony choć jeden to wychodzimy z pętli.

Największa długość genu

Wyznacz i podaj największą liczbę genów występujących u jednego osobnika. Podaj też największą długość genu zapisanego w całym pliku.

Najpierw iterujemy po tablicy genów i wyszukujemy, gdzie jest ich najwięcej i jaka to liczba.

W następnym kroku iterujemy już po wszystkich genach wszystkich osobników. Tym razem interesuje nas największa długość.

Genotyp odporny

Genotyp odczytywany z materiału biologicznego może być odkodowany w kierunku od strony lewej do prawej lub odwrotnie: od strony prawej do lewej. Genotyp nazywać będziemy odpornym, jeśli czytany od strony lewej do prawej oraz od strony prawej do lewej ma dokładnie taką samą część kodującą. Natomiast genotyp silnie odporny to taki, który czytany od strony lewej do prawej oraz od strony prawej do lewej daje dokładnie ten sam napis. (Inaczej mówiąc, genotyp jest silnie odporny, gdy jest palindromem).

Pierwszy punkt sprawił mi trochę kłopotu z powodu tego, że geny oddzielone są od genotypu.

Rozwiązaniem na to jest wyszukiwanie odwróconych genów w genotypie. Jeśli znaleziono tyle samo odwróconych genów co tych normalnych to genotyp jest odporny (immune).

Fragment na genotyp silnie odporny jest dużo jaśniejszy bo wystarczy sprawdzić czy jest palindromem.

Zakończenie

Jest to ostatnie zadanie z arkusza i zdecydowanie parę razy przysporzyło mi ono bólu głowy. Wszystkim zdającym maturę z informatyki życzę powodzenia jak i 2019 tak i w przyszłych latach :)

Dziękuję Ci za przeczytanie tego materiału 😀 Jeżeli spodobało Ci się to o czym piszę, możesz sprawdzić więcej materiałów na blogu lub udostępnić znajomym. Będzie mi bardzo miło 😊

O mnie

Jestem młodym programistą, który dumnie dzierży wiele pasji takich jak bieganie czy piwowarstwo domowe. Jedną z nich jest także programowanie i o tym właśnie zamierzam tutaj pisać.

Zobacz więcej

Najnowsze posty

Kliknij i wspomóż mnie :)

Zostańmy w kontakcie

* Wymagane
Kliknij i wspomóż mnie :)
shop
Otwórz Sklep Play

Zachęcam Cię do odwiedzenia mojej strony na Google Play store i sprawdzenia wszystkich moich aplikacji.