-
Notifications
You must be signed in to change notification settings - Fork 0
/
problem00032.py
29 lines (17 loc) · 971 Bytes
/
problem00032.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#!/usr/bin/env python
# Pandigital products
# Problem 32
# We shall say that an n-digit number is pandigital if it makes use of all the digits 1 to n exactly once; for example, the 5-digit 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 multiplicand/multiplier/product 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.
from functools import reduce
def ispandigital(n, a, b):
c = a * b
s = reduce(lambda x, y: x + y, map(str, [a, b, c]))
if len(s) != n:
return 0
return c if ''.join(sorted(s)) == '123456789'[0:n] else 0
n = 9
#TODO figure out how to specify the ranges
print(sum(set([ispandigital(n, a, b) for a in range(1999) for b in range(1999)])))