summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorReiner Herrmann <reiner@reiner-h.de>2010-06-21 16:25:20 +0200
committerReiner Herrmann <reiner@reiner-h.de>2014-08-31 20:32:41 +0200
commitbe6b51fb35411f2ed9dd1114b36e0b6d54fe1496 (patch)
tree5e3cad122641bbbc14fb16640ec02421390de33d /src
parent29ff377f9a54749198ce600f5981a9c17ba140dc (diff)
projecteuler solution 43
Diffstat (limited to 'src')
-rw-r--r--src/projecteuler/043.py35
-rw-r--r--src/projecteuler/common.py4
2 files changed, 37 insertions, 2 deletions
diff --git a/src/projecteuler/043.py b/src/projecteuler/043.py
new file mode 100644
index 0000000..2dd1db9
--- /dev/null
+++ b/src/projecteuler/043.py
@@ -0,0 +1,35 @@
+from common import pandigital
+
+
+def check_number(i):
+ x = str(i)
+ if int(x[1:4]) & 1 != 0:
+ return False
+ if int(x[2:5]) % 3 != 0:
+ return False
+ if int(x[3:6]) % 5 != 0:
+ return False
+ if int(x[4:7]) % 7 != 0:
+ return False
+ if int(x[5:8]) % 11 != 0:
+ return False
+ if int(x[6:9]) % 13 != 0:
+ return False
+ if int(x[7:10]) % 17 != 0:
+ return False
+ return True
+
+
+numbers = pandigital(0, 9).numbers(11)
+
+result = 0
+
+for i in numbers:
+ if i < 1000000000:
+ continue
+
+ if check_number(i):
+ result += i
+
+print result
+
diff --git a/src/projecteuler/common.py b/src/projecteuler/common.py
index a903ff8..37f13ea 100644
--- a/src/projecteuler/common.py
+++ b/src/projecteuler/common.py
@@ -31,9 +31,9 @@ class sieve:
class pandigital:
# create n-digit pandigital numbers
- def __init__(self, n):
+ def __init__(self, start, end):
self.digits = set()
- for d in range(1, n+1):
+ for d in range(start, end+1):
self.digits.add(d)
# return set of digits that are not in x