All Roads Lead to Rome!

All Roads Lead to Rome!

You are standing at the point (x, y) in the lattice grid of pairs of non-negative numbers, and wish to make your way to the origin point (0, 0). At any point, you are allowed to move either one step left or one step down. Furthermore, you are never allowed to step into any of the points in the tabu list (origin is never in tabu). This function should add up the number of different paths that lead from the point (x,y) to the origin (0,0) under these constraints.

Input: position as array of two integers (number) and tabu as array of positions.

Output: Integer (number).

Examples:

assert.strictEqual(latticePaths([3, 3], []), 20);
assert.strictEqual(latticePaths([3, 4], [[2, 2]]), 17);
assert.strictEqual(
    latticePaths(
        [10, 5],
        [
            [6, 1],
            [2, 3],
        ]
    ),
    2063
);

Precondition:

  • x >= 0 and y >= 0.

The mission was taken from Python CCPS 109. It is taught for Ryerson Chang School of Continuing Education by Ilkka Kokkarinen