Checking a Credit Card Checksum
module CreditCard
def creditcard?
numbers = self.to_s.gsub(/[^\d]+/, '').split(//)
checksum = 0
0.upto numbers.length do |i|
weight = numbers[-1*(i+2)].to_i * (2 - (i%2))
checksum += weight % 9
end
return numbers[-1].to_i == 10 - checksum % 10
end
end
class String
include CreditCard
end
class Integer
include CreditCard
end
puts '1111 1111 6542 1319'.creditcard?
puts '1111111111111313'.creditcard?
Related examples in the same category