From 38610bdd115b65904a129dad6ba0533eb8332fd1 Mon Sep 17 00:00:00 2001 From: Jethro Stapelbroek Date: Tue, 17 Oct 2023 22:46:33 +0200 Subject: [PATCH] Luhn's Checksum Algorithm --- luhnchecksum.py | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 luhnchecksum.py diff --git a/luhnchecksum.py b/luhnchecksum.py new file mode 100644 index 0000000..fb6bff5 --- /dev/null +++ b/luhnchecksum.py @@ -0,0 +1,21 @@ +def luhn_checksum(card_number): + def digits_of(n): + return [int(d) for d in str(n)] + + digits = digits_of(card_number) + odd_digits = digits[-1::-2] + even_digits = digits[-2::-2] + checksum = 0 + checksum += sum(odd_digits) + for d in even_digits: + checksum += sum(digits_of(d * 2)) + return checksum % 10 + + +def is_luhn_valid(card_number): + return luhn_checksum(card_number) == 0 + + +n = int(input()) +for _ in range(n): + print("PASS" if is_luhn_valid(input()) else "FAIL")