Global Verification Authorityでは、ちょうど今、重要な任務を任されたばかりです。 街のいたるところで、オンラインでの買い物から安全なログインまで、数えきれないほどの処理が、クレジットカード番号や銀行口座番号、取引コード、追跡IDといった数値の識別子の正確さに支えられています。 Luhnアルゴリズムは、こうした番号が正しく、誤りがないことを確認するためのシンプルなチェックサムの計算式です。
識別子の束が、ちょうど机の上に届きました。 すべてが正当であることを確認するには、Luhnテストに合格しなければなりません。 もし一つでも不合格になれば、無効としてマークされ、不正な取引や不正アクセスといったエラーや不正行為を防ぐことができます。
これを正しくやり遂げられますか? 多くのサービスの信頼性が、この仕事にかかっています。
クレジットカード番号がLuhnの公式に従って有効かどうかを判定します。
番号は文字列として渡されます。
長さが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で割り切れる場合、その数値は有効です。この数値は有効です!
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で割り切れないため、この数値は有効ではありません。