Solve problem 122.
parent
9f54759c28
commit
dd89390a04
|
@ -0,0 +1,27 @@
|
||||||
|
def euler_122():
|
||||||
|
upper = 201
|
||||||
|
m_k = {k: 0 for k in range(2, upper)}
|
||||||
|
sets = [[1]]
|
||||||
|
for _ in range(11):
|
||||||
|
new_sets = []
|
||||||
|
for s in sets:
|
||||||
|
for i in range(len(s)):
|
||||||
|
new_elem = s[i] + s[-1]
|
||||||
|
if new_elem in m_k and m_k[new_elem] == 0:
|
||||||
|
m_k[new_elem] = len(s)
|
||||||
|
new_sets.append(s + [new_elem])
|
||||||
|
|
||||||
|
# For better performance, we would have to prune here.
|
||||||
|
sets = new_sets
|
||||||
|
|
||||||
|
r = 0
|
||||||
|
for k in range(2, upper):
|
||||||
|
assert m_k[k] != 0
|
||||||
|
r += m_k[k]
|
||||||
|
return r
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
solution = euler_122()
|
||||||
|
print("e122.py: " + str(solution))
|
||||||
|
assert solution == 1582
|
Loading…
Reference in New Issue