nupanick

memoed lambda triangle sum

Jul 11th, 2018
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. const triangleMaxSum = (recur, triangle, row, column) => (row == undefined)
  2.     ? recur(triangle, 0, 0)
  3.     : (triangle.length - row == 1)
  4.         // base case
  5.         ? triangle[row][column]
  6.         // recursive case
  7.         : triangle[row][column] + Math.max(
  8.             recur(triangle, row + 1, column),
  9.             recur(triangle, row + 1, column + 1))
  10.  
  11. const memoize = (fn, cache, memo) =>
  12.     ( cache = cache || []
  13.     , memo = memo || ((...args) => (cache[args])
  14.         ? cache[args]
  15.         : ( cache[args] = fn(memo, ...args)
  16.           , cache[args]))
  17.     , memo)
  18.  
  19. // called as: memoize(triangleMaxSum)(triangleData)
Advertisement
Add Comment
Please, Sign In to add comment