problem45.py 463 B

12345678910111213141516171819202122
  1. #!/usr/bin/env python
  2. def tri(n): return n * (n + 1) / 2
  3. def pent(n): return n * (3 * n - 1) / 2
  4. def hexa(n): return n * (2 * n - 1)
  5. funcs = (tri, pent, hexa)
  6. n = [20] * 3
  7. vals = [f(20) for f in funcs]
  8. while len(set(vals)) > 1 or vals[0] == 40755:
  9. mini = 0
  10. minv = None
  11. for i, v in enumerate(vals):
  12. if minv is None or v < minv:
  13. mini = i
  14. minv = v
  15. n[mini] += 1
  16. vals[mini] = funcs[mini](n[mini])
  17. print vals[0]