number of paths

🏠

pramp question

 1class Memoize:
 2    def __init__(self, fn):
 3        self.fn = fn
 4        self.memo = {}
 5    def __call__(self, *args):
 6        if args not in self.memo:
 7            self.memo[args] = self.fn(*args)
 8        return self.memo[args]
 9
10def num_of_paths_to_dest(n):
11  @Memoize
12  def dp(i, j):
13    if i == j == (n-1):
14      return 1
15    if i >= n or j >= n or (i > j):
16      return 0
17    return (0, dp(i+1, j))[i + 1 < n] + (0, dp(i, j+1))[j + 1 < n]
18  return dp(0, 0)