Skip to content

Instantly share code, notes, and snippets.

@aallan
Created October 29, 2019 21:31
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 aallan/f55746bed72c2fb2d90f8942fced1194 to your computer and use it in GitHub Desktop.
Save aallan/f55746bed72c2fb2d90f8942fced1194 to your computer and use it in GitHub Desktop.
Luhn algorithm implemented in Swift
let creditCardNumbers = [
4964149475059987,
4898620401632387,
4393958570449195,
4751492711160905,
4437340772573099,
]
let valid = creditCardNumbers.filter
{ number in
let digits = String(number).compactMap{ $0.wholeNumberValue }
let reversed = digits.reversed()
var sum = 0
for (index, element) in reversed.enumerated()
{
let even = (index % 2 == 0)
let digit = even ? element : element * 2
sum += digit > 9 ? digit - 9 : digit
}
return sum % 10 == 0
}
print(valid)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment