"""@package Problem
    
    Project Eular - Problem 43

    The number, 1406357289, is a 0 to 9 pandigital number because it is made up of each of the digits 0 to 9 in some order, but it also has a rather interesting sub-string divisibility property.

    Let d1 be the 1st digit, d2 be the 2nd digit, and so on. In this way, we note the following:

    d2d3d4=406 is divisible by 2
    d3d4d5=063 is divisible by 3
    d4d5d6=635 is divisible by 5
    d5d6d7=357 is divisible by 7
    d6d7d8=572 is divisible by 11
    d7d8d9=728 is divisible by 13
    d8d9d10=289 is divisible by 17

    Find the sum of all 0 to 9 pandigital numbers with this property.
    
    @author Shane Auckland <shane.auckland@gmail.com>
    
"""

import itertools

def getSub(num, a, b, c):
    return int(num[a-1:a] + num[b-1:b] + num[c-1:c])

total = 0

for n in [''.join(p) for p in itertools.permutations('0123456789')]:
    if getSub(n, 2, 3, 4) % 2 != 0 or \
       getSub(n, 3, 4, 5) % 3 != 0 or \
       getSub(n, 4, 5, 6) % 5 != 0 or \
       getSub(n, 5, 6, 7) % 7 != 0 or \
       getSub(n, 6, 7, 8) % 11 != 0 or \
       getSub(n, 7, 8, 9) % 13 != 0 or \
       getSub(n, 8, 9, 10) % 17 != 0:
       continue
    total += int(n)

print total
