67.py 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. # Same code used for problem 18
  2. def loadTriangle():
  3. """
  4. Returns a list of lists for the triangle stored in file
  5. """
  6. f = open("67_triangle.txt", 'r')
  7. triangle = f.read().split("\n")
  8. for row in range(len(triangle)):
  9. triangle[row] = map(int, triangle[row].split())
  10. return triangle
  11. def addBottom(triangle):
  12. """
  13. Adds maximum values from the bottom row to the row above, reducing the
  14. number of rows in the triangle
  15. """
  16. newTriangle = triangle[:-1]
  17. # maxBottom is a list that contains the maximum values corresponding to the
  18. # second to last row
  19. maxBottom = []
  20. for s in range(0,len(triangle[-1])-1):
  21. b = s + 1
  22. maxBottom.append(max([triangle[-1][s],triangle[-1][b]]))
  23. # Adds value of maxBottom to second to last row in the new triangle
  24. for value in range(len(newTriangle[-1])):
  25. newTriangle[-1][value] += maxBottom[value]
  26. return newTriangle
  27. def main():
  28. """ Main loop, iterates through triangle until only top value is left """
  29. triangle = loadTriangle()
  30. while len(triangle) > 1:
  31. triangle = addBottom(triangle)
  32. return triangle[0][0]
  33. print main()