check_digit
文書の過去の版を表示しています。
check digit
Luhnアルゴリズム
input = ARGV[0] # Luhn formula check digit s = input.split("").reverse.map(&:to_i).map.with_index do |n, i| # 偶数桁の場合は2倍する(iは0から始まるので奇数桁の場合はiが奇数) if i.odd? n *= 2 end # 10以上の場合は1の位と10の位を足す(18が最大なので10の位は必ず1) if n < 10 n else n = n % 10 + 1 end end.sum if (s % 10) == 0 puts "OK #{s}" else puts "NG #{s}" end
check_digit.1708863278.txt.gz · 最終更新: 2024/02/25 12:14 by nullpon