Advertisement
Colds_IRC

Python

Jun 13th, 2017
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.17 KB | None | 0 0
  1. import sys
  2.  
  3. fh = open(sys.argv[1])
  4. rows = [map(int, line.split()) for line in fh.readlines()]
  5.  
  6. cache = {}
  7.  
  8. def max_sum(level=0, index=0):
  9. try:
  10. return cache[(level,index)]
  11. except:
  12. pass
  13. try:
  14. assert index >= 0
  15. n = rows[level][index]
  16. except:
  17. result = 0
  18. else:
  19. next_level = level+1
  20. result = n + max(max_sum(next_level, index),
  21. max_sum(next_level, index+1),
  22. )
  23. cache[(level,index)] = result
  24. return result
  25.  
  26. print max_sum()
  27. print 'cache size', len(cache)
  28.  
  29. def _reduce(level=len(rows)-1):
  30. #print
  31. #print 'level', rows[level]
  32. if len(rows) <= 1:
  33. return rows[0][0]
  34. level_above = level-1
  35. for index, _ in enumerate(rows[level_above]):
  36. #print 'index', index
  37. l = max(0, index)
  38. r = min(index+2, len(rows[level]))
  39. #print 'range', l, '-', r
  40. sub_max = max(rows[level][l:r])
  41. #print 'sub_max', sub_max
  42. rows[level_above][index] += sub_max
  43. #print 'level above', rows[level_above]
  44. del rows[level]
  45. return _reduce(level_above)
  46.  
  47. print _reduce()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement