Solve problem 162.
This commit is contained in:
39
python/e162.py
Normal file
39
python/e162.py
Normal file
@@ -0,0 +1,39 @@
|
||||
from functools import lru_cache
|
||||
|
||||
|
||||
@lru_cache
|
||||
def combs(xs, first=False):
|
||||
if xs == (0, 0, 0, 0):
|
||||
return 1
|
||||
|
||||
c = 0
|
||||
z, o, a, r = xs
|
||||
|
||||
if (not first) and z > 0:
|
||||
c += combs((z - 1, o, a, r))
|
||||
if o > 0:
|
||||
c += combs((z, o - 1, a, r))
|
||||
if a > 0:
|
||||
c += combs((z, o, a - 1, r))
|
||||
if r > 0:
|
||||
c += 13 * combs((z, o, a, r - 1))
|
||||
return c
|
||||
|
||||
|
||||
def euler_162():
|
||||
t = 0
|
||||
for n in range(17):
|
||||
for z in range(1, n + 1):
|
||||
for o in range(1, n + 1):
|
||||
for a in range(1, n + 1):
|
||||
r = n - z - o - a
|
||||
if not r >= 0:
|
||||
continue
|
||||
t += combs((z, o, a, r), True)
|
||||
return hex(t)[2:].upper()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
solution = euler_162()
|
||||
print("e162.py: " + str(solution))
|
||||
assert(solution == "3D58725572C62302")
|
||||
Reference in New Issue
Block a user