we shall say that an ndigit number is pandigital if it makes use of all the digits 1 to n exactly once for example the 5digit number 15234 is 1 through 5 pandigital the product 7254 is unusual as the identity 39 186 7254 containing multiplicand multiplier and product is 1 through 9 pandigital find the sum of all products whose multiplicandmultiplierproduct identity can be written as a 1 through 9 pandigital hint some products can be obtained in more than one way so be sure to only include it once in your sum checks if a combination a tuple of 9 digits is a valid product equation iscombinationvalid 3 9 1 8 6 7 2 5 4 true iscombinationvalid 1 2 3 4 5 6 7 8 9 false finds the sum of all products whose multiplicandmultiplierproduct identity can be written as a 1 through 9 pandigital solution 45228 checks if a combination a tuple of 9 digits is a valid product equation is_combination_valid 3 9 1 8 6 7 2 5 4 true is_combination_valid 1 2 3 4 5 6 7 8 9 false finds the sum of all products whose multiplicand multiplier product identity can be written as a 1 through 9 pandigital solution 45228
import itertools


def is_combination_valid(combination):
    
    return (
        int("".join(combination[0:2])) * int("".join(combination[2:5]))
        == int("".join(combination[5:9]))
    ) or (
        int("".join(combination[0])) * int("".join(combination[1:5]))
        == int("".join(combination[5:9]))
    )


def solution():
    

    return sum(
        {
            int("".join(pandigital[5:9]))
            for pandigital in itertools.permutations("123456789")
            if is_combination_valid(pandigital)
        }
    )


if __name__ == "__main__":
    print(solution())