#!/usr/bin/python3

"""
https://projecteuler.net/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.
"""

import itertools

def gen_pandigital(n=10):
    str_num='0123456789'[:n]
    pans=[''.join(p) for p in itertools.permutations(str_num)]
    return [int(i) for i in pans]

def get_block(num,start,block_size):
    str_num=str(num)
    return int(str_num[start:start+block_size])

def main():    
    pans=gen_pandigital()
    sum_pan=0
    for pan in pans:
        if get_block(pan,1,3)%2 ==0:
            if get_block(pan,2,3)%3 ==0:
                if get_block(pan,3,3)%5 ==0:
                    if get_block(pan,4,3)%7 ==0: 
                        if get_block(pan,5,3)%11 ==0: 
                            if get_block(pan,6,3)%13 ==0: 
                                if get_block(pan,7,3)%17 ==0:
                                    sum_pan+=pan
    return sum_pan
