Luhn

Luhn

中級

説明

与えられた数値がLuhnの公式に従って有効かどうかを判定します。

Luhnアルゴリズムは、クレジットカード番号やカナダの社会保険番号など、さまざまな識別番号を検証するために使われるシンプルなチェックサムの公式です。

ここでの課題は、与えられた文字列が有効かどうかを確認することです。

数値の検証

長さが1以下の文字列は有効ではありません。 入力にはスペースを含めることができますが、検証の前に取り除く必要があります。 それ以外の数字以外の文字は許可されません。

例1:有効なクレジットカード番号

4539 3195 0343 6467

Luhnアルゴリズムの最初のステップは、右から数えて1つおきの数字を2倍にすることです。 ここでは、次の桁を2倍にします。

4539 3195 0343 6467
↑ ↑  ↑ ↑  ↑ ↑  ↑ ↑  (double these)

2倍した結果が9より大きくなった場合は、その積から9を引きます。 2倍にした結果は次のとおりです。

8569 6195 0383 3437

次に、すべての桁を合計します。

8+5+6+9+6+1+9+5+0+3+8+3+3+4+3+7 = 80

合計が10で割り切れる場合、その数値は有効です。 この数値は有効です!

例2:無効なクレジットカード番号

8273 1232 7352 0569

右から数えて1つおきの数字を2倍にします。

7253 2262 5312 0539

桁を合計します。

7+2+5+3+2+2+6+2+5+3+1+2+0+5+3+9 = 57

57は10で割り切れないため、この数値は有効ではありません。

GitHubで編集する リンクは新しいウィンドウまたはタブで開きます
Haskell Exercism

Luhnを始める準備はできましたか?

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

Luhnを深く掘り下げよう!

Luhnの8つのバージョンを見ていきます。とてもすっきりしたRubyの実装から始めて、命令型と関数型のアプローチをいくつか探り、最後はErikとJeremyが解読に苦労したSQLite版で締めくくります!