A tested sejtekből áll, amelyek DNS-t tartalmaznak. Ezek a sejtek rendszeresen elhasználódnak, és pótlásra szorulnak, amit úgy oldanak meg, hogy leánysejtekre osztódnak. Sőt, egy átlagos emberi szervezetben egy élet során körülbelül 10 billiárd sejtosztódás megy végbe!
Amikor a sejtek osztódnak, a bennük lévő DNS is megkettőződik. Néha ilyenkor hibák csúsznak be, és egy-egy DNS-darab hibás információval kódolódik. Ha összehasonlítunk két DNS-szálat, és megszámoljuk a köztük lévő eltéréseket, láthatjuk, hány hiba történt. Ezt nevezik „Hamming-távolságnak”.
A Hamming-távolság a tudomány számos területén hasznos, nem csak a biológiában, szóval jó, ha ismered ezt a kifejezést :)
Számítsd ki két DNS-szál Hamming-távolságát.
A DNS-t a C, A, G és T betűkkel olvassuk le. Két szál így nézhet ki:
GAGCCTACTAACGGGAT
CATCGTAATGACGGCCT
^ ^ ^ ^ ^ ^^
7 különbség van köztük, ezért a Hamming-távolság 7.
A Hamming-távolság csak egyenlő hosszúságú sorozatokra értelmezett, ezért ha két különböző hosszúságú sorozat között próbáljuk kiszámítani, annak nem szabad működnie.
Néha elkerülhetetlen, hogy kivételt dobj. Amikor ezt teszed, mindig adj meg egy beszédes hibaüzenetet, amely megmutatja, mi a hiba forrása. Ettől olvashatóbb lesz a kódod, és a hibakeresésben is sokat segít. Ha tudod, hogy a hiba forrása egy adott típusú, akkor választhatod a beépített hibatípusok egyikét, de ilyenkor is adj meg beszédes üzenetet.
Ennél a konkrét feladatnál a raise utasítást kell használnod ahhoz, hogy ValueError-t „dobj”, amikor a vizsgált szálak hossza nem egyezik. A tesztek csak akkor lesznek sikeresek, ha raise-eled az exception-t, és üzenetet is adsz hozzá.
Ahhoz, hogy egy ValueError-t üzenettel dobj, írd az üzenetet az exception típus argumentumaként:
# When the sequences being passed are not the same length.
raise ValueError("Strands must be of equal length.")
Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) Python nyelvet 17 fogalom146 feladat segítségével, valódi emberi mentorálással, mindez ingyen.