トラック
/
Python
Python
/
演習
/
ハミング
ハミング

ハミング

初級

はじめに

体は、DNAを含む細胞でできています。 そうした細胞は定期的に古くなり、入れ替わる必要があります。それが、娘細胞に分裂することで行われます。 実際、平均的な人間の体では、一生の間に約1京回もの細胞分裂が起こっています!

細胞が分裂するとき、DNAも複製されます。 この過程でときどき間違いが起こり、DNAの一片に誤った情報が書き込まれてしまうことがあります。 2本のDNAの鎖を比べて、違いの数を数えれば、いくつの間違いが起きたのかがわかります。 これが「ハミング距離」と呼ばれるものです。

ハミング距離は生物学だけでなく、科学の多くの分野で役立つので、覚えておくとよい言葉です :)

説明

2つのDNA鎖の間のハミング距離を計算します。

DNAは、C、A、G、Tという文字で表されます。 2つの鎖は、たとえば次のようになります。

GAGCCTACTAACGGGAT
CATCGTAATGACGGCCT
^ ^ ^  ^ ^    ^^

違いは7か所あるので、ハミング距離は7です。

実装上の注意

ハミング距離は、同じ長さの並びに対してのみ定義されています。そのため、長さの異なる並びの間で計算しようとしても、うまくいきません。

例外メッセージ

ときに、例外を発生させる必要があります。その際は、エラーの原因が何であるかを示す意味のあるエラーメッセージを必ず含めるようにしましょう。これによりコードが読みやすくなり、デバッグも格段にはかどります。エラーの原因が特定の種類になるとわかっている場合は、組み込みのエラー型のいずれかを送出する方法もありますが、その場合も意味のあるメッセージを含めるようにしましょう。

この演習では、比較するストランドの長さが同じでないときに、raise文を使ってValueErrorを「送出」する必要があります。テストが通るのは、exceptionをraiseし、かつそれにメッセージを添えた場合だけです。

メッセージ付きでValueErrorを送出するには、exception型に渡す引数としてメッセージを書きます:

# When the sequences being passed are not the same length.
raise ValueError("Strands must be of equal length.")
GitHubで編集する リンクは新しいウィンドウまたはタブで開きます
Python Exercism

ハミングを始める準備はできましたか?

Exercismに登録すれば、17個のコンセプト146個の演習、そして本物の人間によるメンタリングとともに、Pythonを学んでマスターできます。すべて無料です。