内容へ移動
Cat Paw Software
ユーザ用ツール
ログイン
サイト用ツール
検索
ツール
文書の表示
以前のリビジョン
バックリンク
最近の変更
メディアマネージャー
サイトマップ
ログイン
>
最近の変更
メディアマネージャー
サイトマップ
トレース:
check_digit
この文書は読取専用です。文書のソースを閲覧することは可能ですが、変更はできません。もし変更したい場合は管理者に連絡してください。
<markdown> # check digit ## Luhnアルゴリズム チェック処理 ```ruby input = ARGV[0] # Luhn formula check digit s = input.split("").reverse.map(&:to_i).map.with_index do |n, i| # 偶数桁の場合は2倍する(iは0から始まるのでevenではなく、oddで偶数桁を判定) if i.odd? n *= 2 n > 9 ? n - 9 : n # 10以上の場合は1の位と10の位の数字を足す、を最適化 else n end end.sum % 10 if s == 0 puts "OK" exit 0 else puts "NG" exit 1 end ``` チェックディジットを求める ```ruby code = ARGV[0] # Luhn formula check digit d = code.split("").reverse.map(&:to_i).map.with_index do |n, i| if i.even? n *= 2 n > 9 ? n - 9 : n else n end end.sum % 10 # 10 - d が 0 の場合は 0 を出力、それ以外は 10 - d を出力 puts d == 0 ? 0 : 10 - d ``` </markdown>
check_digit.txt
· 最終更新: 2024/02/25 13:39 by
nullpon
ページ用ツール
文書の表示
以前のリビジョン
バックリンク
文書の先頭へ