Luhn

Luhn

中級

説明

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

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

この演習の目的は、与えられた文字列が有効かどうかを判定することです。

数値の検証

長さが1以下の文字列は無効です。 入力に空白が含まれていてもかまいませんが、検証の前に取り除く必要があります。 それ以外の数字以外の文字は許可されていません。

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

4539 3195 0343 6467

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

4_3_ 3_9_ 0_4_ 6_6_

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で編集する リンクは新しいウィンドウまたはタブで開きます
Pharo Exercism

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

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

Luhnを深く掘り下げよう!

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