45.py 485 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. init = 20
  7. n = [init] * len(funcs)
  8. vals = [f(init) for f in funcs]
  9. while len(set(vals)) > 1 or vals[0] == 40755:
  10. mini = 0
  11. minv = None
  12. for i, v in enumerate(vals):
  13. if minv is None or v < minv:
  14. mini = i
  15. minv = v
  16. n[mini] += 1
  17. vals[mini] = funcs[mini](n[mini])
  18. print vals[0]