summaryrefslogtreecommitdiff
path: root/postgresqleu/util/checksum.py
blob: 88eab732350e66147d50686c3f5d801bd97288f1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
from itertools import cycle


def luhn(s):
    factors = cycle([2, 1])

    def partial(num, factor):
        q, r = divmod(num * factor, 10)
        return q + r

    f = sum(partial(int(c), f) for c, f in zip(s, factors))
    return -f % 10