Hamming

Hamming

Fácil

Introdução

Seu corpo é formado por células que contêm DNA. Essas células se desgastam com frequência e precisam ser substituídas, o que elas fazem se dividindo em células-filhas. Na verdade, o corpo humano médio passa por cerca de 10 quatrilhões de divisões celulares ao longo da vida!

Quando as células se dividem, o DNA delas também se replica. Às vezes, durante esse processo, acontecem erros e pequenos trechos de DNA são codificados com a informação incorreta. Se compararmos duas fitas de DNA e contarmos as diferenças entre elas, podemos ver quantos erros aconteceram. Isso é conhecido como "distância de Hamming".

A distância de Hamming é útil em muitas áreas da ciência, não só na biologia, então é um termo legal de se conhecer :)

Instruções

Calcule a distância de Hamming entre duas fitas de DNA.

Lemos o DNA usando as letras C, A, G e T. Duas fitas podem ser assim:

GAGCCTACTAACGGGAT
CATCGTAATGACGGCCT
^ ^ ^  ^ ^    ^^

Elas têm 7 diferenças e, portanto, a distância de Hamming é 7.

Notas de implementação

A distância de Hamming só está definida para sequências de mesmo comprimento, então uma tentativa de calculá-la entre sequências de comprimentos diferentes não deve funcionar.

Mensagens de exceção

Às vezes, é necessário lançar uma exceção. Quando você faz isso, deve sempre incluir uma mensagem de erro significativa para indicar qual é a origem do erro. Isso deixa seu código mais legível e ajuda bastante na depuração. Em situações nas quais você sabe que a origem do erro será de um tipo específico, você pode escolher lançar um dos tipos de erro embutidos, mas ainda assim deve incluir uma mensagem significativa.

Este exercício em particular exige que você use a instrução raise para "lançar" uma ValueError quando as fitas verificadas não tiverem o mesmo comprimento. Os testes só vão passar se você fizer o raise da exception e incluir uma mensagem junto com ela.

Para lançar uma ValueError com uma mensagem, escreva a mensagem como um argumento para o tipo exception:

# When the sequences being passed are not the same length.
raise ValueError("Strands must be of equal length.")
Editar via GitHub O link abre em uma nova janela ou aba
Python Exercism

Tudo pronto para começar Hamming?

Crie sua conta no Exercism para aprender e dominar Python com 17 conceitos146 exercícios e mentoria humana de verdade, tudo de graça.