Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
First solution in Clear category for Golden Pyramid by bpvital
class Pyramid:
def __init__(self,cells):
self.height = len(cells)
self.values = cells
def calculate(self,row,col):
"""
this function is recursive and returns an (int of maximum gold can be gathered on a singe run, [solve_coords as a string of "L,R"])
Function is RECURSIVE
"""
#base case
if row == self.height - 1:
return (self.values[row][col])
#divide
else:
left = self.calculate(row + 1, col)
right = self.calculate(row + 1, col + 1)
if left >= right:
return (self.values[row][col] + left)
else:
return (self.values[row][col] + right)
def count_gold(pyramid):
"""
Return max possible sum in a path from top to bottom
"""
new = Pyramid(pyramid)
return new.calculate(0,0)
if __name__ == '__main__':
#These "asserts" using only for self-checking and not necessary for auto-testing
assert count_gold((
(1,),
(2, 3),
(3, 3, 1),
(3, 1, 5, 4),
(3, 1, 3, 1, 3),
(2, 2, 2, 2, 2, 2),
(5, 6, 4, 5, 6, 4, 3)
)) == 23, "First example"
assert count_gold((
(1,),
(2, 1),
(1, 2, 1),
(1, 2, 1, 1),
(1, 2, 1, 1, 1),
(1, 2, 1, 1, 1, 1),
(1, 2, 1, 1, 1, 1, 9)
)) == 15, "Second example"
assert count_gold((
(9,),
(2, 2),
(3, 3, 3),
(4, 4, 4, 4)
)) == 18, "Third example"
Sept. 28, 2014