Skip to content

Instantly share code, notes, and snippets.

@Bablzz
Last active July 3, 2019 11:57
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Bablzz/0c1c6e30fbcd8eeaae3c1d1493abe5c3 to your computer and use it in GitHub Desktop.
Save Bablzz/0c1c6e30fbcd8eeaae3c1d1493abe5c3 to your computer and use it in GitHub Desktop.
Luhn algorithm
def sum_digits digit
if digit < 10
digit
else
(digit % 10) + (digit / 10).to_f
end
end
def validate number
number = number.to_s.reverse.to_i
digit_in_number = number.to_s.split('')
even_digit_in_number, final_digit_list = [], []
digit_in_number.each_with_index do |v, i|
if (i % 2) == 0
even_digit_in_number << v.to_i
else
even_digit_in_number << v.to_i*2
end
end
even_digit_in_number.each do |d|
final_digit_list << sum_digits(d)
end
final_digit_list.sum % 10 == 0
end
puts validate 4561261212345467
# => true
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment