ユーザ用ツール

サイト用ツール


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