Finished existing ipython solutions to python. Ready to continue in pure python.
This commit is contained in:
@@ -1,8 +1,59 @@
|
||||
def get_four_digit_numbers(function):
|
||||
r = []
|
||||
n = 1
|
||||
f = function
|
||||
while f(n) < 10000:
|
||||
if f(n) > 999:
|
||||
r.append(f(n))
|
||||
n += 1
|
||||
return r
|
||||
|
||||
|
||||
def search_solution(aggregator, polygonals):
|
||||
if not polygonals:
|
||||
if is_cyclic(aggregator[-1], aggregator[0]):
|
||||
return aggregator
|
||||
else:
|
||||
return []
|
||||
|
||||
if not aggregator:
|
||||
for polygonal in polygonals:
|
||||
for number in polygonal:
|
||||
aggregator.append(number)
|
||||
s = search_solution(
|
||||
aggregator, [p for p in polygonals if p != polygonal])
|
||||
if s:
|
||||
return s
|
||||
aggregator.pop()
|
||||
|
||||
for polygonal in polygonals:
|
||||
for number in polygonal:
|
||||
if is_cyclic(aggregator[-1], number) and number not in aggregator:
|
||||
aggregator.append(number)
|
||||
s = search_solution(
|
||||
aggregator, [p for p in polygonals if p != polygonal])
|
||||
if s:
|
||||
return s
|
||||
aggregator.pop()
|
||||
return []
|
||||
|
||||
|
||||
def is_cyclic(a, b):
|
||||
return str(a)[-2:] == str(b)[:2]
|
||||
|
||||
|
||||
def euler_061():
|
||||
return 0
|
||||
triangles = get_four_digit_numbers(lambda n: n * (n + 1) // 2)
|
||||
squares = get_four_digit_numbers(lambda n: n**2)
|
||||
pentas = get_four_digit_numbers(lambda n: n * (3 * n - 1) // 2)
|
||||
hexas = get_four_digit_numbers(lambda n: n * (2 * n - 1))
|
||||
heptas = get_four_digit_numbers(lambda n: n * (5 * n - 3) // 2)
|
||||
octas = get_four_digit_numbers(lambda n: n * (3 * n - 2))
|
||||
s = search_solution([], [triangles, squares, pentas, hexas, heptas, octas])
|
||||
s = sum(s)
|
||||
return s
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
print("e061.py: " + str(euler_061()))
|
||||
assert(euler_061() == 0)
|
||||
assert(euler_061() == 28684)
|
||||
|
||||
Reference in New Issue
Block a user