Нужна помощь с контрольной суммой алгоритма луна
начал изучать Python и как первый проект решил взять себе написание алгоритма Луна, Но столкнулся с проблемой я не понимаю как можно найти все возможные комбинации по алгоритму луна. Условно имея номер карты 7000 0012 2000 xxxx нужно перебать все подходящие под алгоритм луна комбинации, которые стоят на месте "xxxx" Наведите на мысль или дайте конкретное решение которое я обязательно разберу и осознаю
def generateCardNumber():
result = '700000122000'
for i in range(13, 17):
random.seed()
result += str(random.randint(1, 9))
if (i % 4 == 0):
result += ' '
print(result)
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
Ну вот, тупой перебор...
from functools import reduce
def luhn(code):
LOOKUP = (0, 2, 4, 6, 8, 1, 3, 5, 7, 9)
code = reduce(str.__add__, filter(str.isdigit, code))
evens = sum(int(i) for i in code[-1::-2])
odds = sum(LOOKUP[int(i)] for i in code[-2::-2])
return ((evens + odds) % 10 == 0)
for i in range(0,10000):
s = '7000 0012 2000 ' + str(i).rjust(4,'0')
if luhn(s):
print(s)
Можно и умнее - вычислять контрольную цифру, но это уже самостоятельно :)