#!/usr/bin/env python
#-*-coding:utf-8-*-

'''
'''

import itertools
import timeit

polygonal = [[], [], [], [], [], []]
for i in range(6):
    polygonal[i] = [n*((i+1)*n+(1-i))/2 for n in range(1, 200) if 1000 <= n*((i+1)*n+(1-i))/2 <= 10000]


def next_candidates(n, i):
    return [p for p in polygonal[i] if n/100 == p%100]


def cyclic(l, o, n):
    if len(l) == n:
        return l
    candidates = next_candidates(l[-1], o[len(l)])
    for c in candidates:
        l = cyclic(l+[c], o, n)
        if len(l) == n:
            break
    else:
        l.pop()
    return l


def calc(n):
    for o in itertools.permutations(range(n)):
        order = list(o)
        for i in polygonal[order[0]]:
            l = cyclic([i], order, n)
            if len(l) == n and l[0]%100 == l[-1]/100:
                return sum(l), l, o

if __name__ == '__main__':
    print calc(6)
    print timeit.Timer('problem_061.calc(6)', 'import problem_061').timeit(1)

@@ -40,16 +40,1128 @@
 *-%0A%0A'''%0A
+Triangle, square, pentagonal, hexagonal, heptagonal, and octagonal numbers are%0Aall figurate (polygonal) numbers and are generated by the following formulae:%0A%0ATriangle%09 %09P3,n=n(n+1)/2%09 %091, 3, 6, 10, 15, ...%0ASquare%09 %09P4,n=n2%09 %091, 4, 9, 16, 25, ...%0APentagonal%09 %09P5,n=n(3n%E2%88%921)/2%09 %091, 5, 12, 22, 35, ...%0AHexagonal%09 %09P6,n=n(2n%E2%88%921)%09 %091, 6, 15, 28, 45, ...%0AHeptagonal%09 %09P7,n=n(5n%E2%88%923)/2%09 %091, 7, 18, 34, 55, ...%0AOctagonal%09 %09P8,n=n(3n%E2%88%922)%09 %091, 8, 21, 40, 65, ...%0A%0AThe ordered set of three 4-digit numbers: 8128, 2882, 8281,%0Ahas three interesting properties.%0A%0AThe set is cyclic, in that the last two digits of each number is%0Athe first two digits of the next number (including the last number with the first).%0AEach polygonal type: triangle (P3,127=8128), square (P4,91=8281),%0Aand pentagonal (P5,44=2882), is represented by a different number in the set.%0AThis is the only set of 4-digit numbers with this property.%0AFind the sum of the only ordered set of six cyclic 4-digit numbers%0Afor which each polygonal type: triangle, square, pentagonal, hexagonal,%0Aheptagonal, and octagonal, is represented by a different number in the set.%0A
 '''%0A%0Aimp

add problem sentence