'''Задача 32.'''
# Каждое n-значное число, которое содержит каждую цифру от 1 до n ровно один раз, будем считать пан-цифровым; к примеру,
# 5-значное число 15234 является пан-цифровым, т.к. содержит цифры от 1 до 5.
# Произведение 7254 является необычным, поскольку равенство 39 × 186 = 7254, состоящее из множимого, 
# множителя и произведения является пан-цифровым, т.е. содержит цифры от 1 до 9.
# Найдите сумму всех пан-цифровых произведений, для которых равенство "множимое × множитель = произведение" 
# можно записать цифрами от 1 до 9, используя каждую цифру только один раз.
# ПОДСКАЗКА: Некоторые произведения можно получить несколькими способами, поэтому убедитесь, 
# что включили их в сумму лишь единожды.

result = []


def func(arg1, arg2, arg3):
    nom = []

    for noms in str(arg1):
        if noms not in nom:
            nom.append(noms)

    for noms in str(arg2):
        if noms not in nom:
            nom.append(noms)

    for noms in str(arg3):
        if noms not in nom:
            nom.append(noms)

    if len(nom) == 9:
        print(i, '*', x, '=', z)
        if z not in result:
            result.append(z)


for i in range(1, 5000):  # до 5000 т.к. если больше, то кол-во цифр будет больше 9-ти (2 * 5000 = 10000) уже 10
    for x in range(1, 5000):
        z = i * x
        not_0 = str(z) + str(i) + str(x)

        if len(not_0) == 9 and '0' not in not_0:
            func(i, x, z)


print('result: ', sum(result))

