Hamming

Hamming

Facile

Introduction

Ton corps est constitué de cellules qui contiennent de l'ADN. Ces cellules s'usent régulièrement et doivent être remplacées, ce qu'elles font en se divisant en cellules filles. En fait, en moyenne, le corps humain connaît environ 10 millions de milliards de divisions cellulaires au cours d'une vie !

Lorsque les cellules se divisent, leur ADN se réplique aussi. Parfois, pendant ce processus, des erreurs se produisent et des fragments d'ADN isolés se retrouvent encodés avec une information incorrecte. Si on compare deux brins d'ADN et qu'on compte les différences entre eux, on peut voir combien d'erreurs se sont produites. C'est ce qu'on appelle la « distance de Hamming ».

La distance de Hamming est utile dans de nombreux domaines scientifiques, pas seulement en biologie, donc c'est une expression qu'il est bon de connaître :)

Instructions

Calcule la distance de Hamming entre deux brins d'ADN.

On lit l'ADN à l'aide des lettres C, A, G et T. Deux brins peuvent ressembler à ceci :

GAGCCTACTAACGGGAT
CATCGTAATGACGGCCT
^ ^ ^  ^ ^    ^^

Ils présentent 7 différences, donc la distance de Hamming est de 7.

Notes d'implémentation

La distance de Hamming n'est définie que pour des séquences de même longueur, donc essayer de la calculer entre des séquences de longueurs différentes ne doit pas fonctionner.

Messages d'exception

Il est parfois nécessaire de lever une exception. Dans ce cas, tu dois toujours inclure un message d'erreur explicite pour indiquer la source de l'erreur. Cela rend le code plus lisible et facilite grandement le débogage. Lorsque tu sais que la source de l'erreur sera d'un certain type, tu peux choisir de lever l'un des types d'erreur intégrés, mais tu dois quand même inclure un message explicite.

Cet exercice demande en particulier que tu utilises l'instruction raise pour « lancer » une ValueError lorsque les brins vérifiés n'ont pas la même longueur. Les tests ne passeront que si tu lèves l'exception avec raise et que tu y ajoutes un message.

Pour lever une ValueError avec un message, écris ce message comme argument du type d'exception :

# When the sequences being passed are not the same length.
raise ValueError("Strands must be of equal length.")
Modifie via GitHub Le lien s'ouvre dans une nouvelle fenêtre ou un nouvel onglet
Python Exercism

Prêt à commencer Hamming ?

Inscris-toi sur Exercism pour apprendre et maîtriser Python avec 17 concepts146 exercices, et un vrai mentorat humain, le tout gratuitement.