Tu cuerpo está formado por células que contienen ADN. Esas células se desgastan con regularidad y necesitan reemplazarse, algo que logran dividiéndose en células hijas. De hecho, ¡el cuerpo humano promedio experimenta unas 10 000 billones de divisiones celulares a lo largo de la vida!
Cuando las células se dividen, su ADN también se replica. A veces, durante este proceso ocurren errores y piezas individuales de ADN quedan codificadas con información incorrecta. Si comparamos dos cadenas de ADN y contamos las diferencias entre ellas, podemos ver cuántos errores ocurrieron. Esto se conoce como la «distancia de Hamming».
La distancia de Hamming es útil en muchas áreas de la ciencia, no solo en biología, así que es una expresión que conviene conocer :)
Calcula la distancia de Hamming entre dos cadenas de ADN.
Leemos el ADN usando las letras C, A, G y T. Dos cadenas podrían verse así:
GAGCCTACTAACGGGAT
CATCGTAATGACGGCCT
^ ^ ^ ^ ^ ^^
Tienen 7 diferencias y, por lo tanto, la distancia de Hamming es 7.
La distancia de Hamming solo se define para secuencias de la misma longitud, así que un intento de calcularla entre secuencias de distinta longitud no debería funcionar.
A veces es necesario lanzar una excepción. Cuando lo hagas, siempre debes incluir un mensaje de error significativo que indique cuál es el origen del error. Esto hace que tu código sea más legible y ayuda mucho a depurar. En los casos en los que sabes que el origen del error va a ser de cierto tipo, puedes optar por lanzar uno de los tipos de error incorporados, pero aun así debes incluir un mensaje significativo.
Este ejercicio en particular requiere que uses la sentencia raise para «lanzar» un ValueError cuando los strands que se comparan no tienen la misma longitud. Las pruebas solo pasarán si lanzas la exception con raise y además incluyes un mensaje con ella.
Para lanzar un ValueError con un mensaje, escribe el mensaje como argumento del tipo exception:
# When the sequences being passed are not the same length.
raise ValueError("Strands must be of equal length.")
Regístrate en Exercism para aprender y dominar Python con 17 conceptos146 ejercicios y mentoría humana real, todo gratis.