2018-09-30 22:01:58 +00:00
---
id: 5900f37b1000cf542c50fe8e
challengeType: 5
title: 'Problem 15: Lattice paths'
---
## Description
< section id = 'description' >
Starting in the top left corner of a 2× 2 grid, and only being able to move to the right and down, there are exactly 6 routes to the bottom right corner.
2019-05-20 18:28:20 +00:00
< img class = "img-responsive center-block" alt = "a diagram of 6 2 by 2 grids showing all the routes to the bottom right corner" src = "https://cdn-media-1.freecodecamp.org/imgr/1Atixoj.gif" >
2018-09-30 22:01:58 +00:00
How many such routes are there through a given < code > gridSize< / code > ?
< / section >
## Instructions
< section id = 'instructions' >
< / section >
## Tests
< section id = 'tests' >
```yml
2018-10-04 13:37:37 +00:00
tests:
- text: < code > latticePaths(4)</ code > should return 70.
2018-10-20 18:02:47 +00:00
testString: assert.strictEqual(latticePaths(4), 70, '< code > latticePaths(4)< / code > should return 70.');
2018-10-04 13:37:37 +00:00
- text: < code > latticePaths(9)</ code > should return 48620.
2018-10-20 18:02:47 +00:00
testString: assert.strictEqual(latticePaths(9), 48620, '< code > latticePaths(9)< / code > should return 48620.');
2018-10-04 13:37:37 +00:00
- text: < code > latticePaths(20)</ code > should return 137846528820.
2018-10-20 18:02:47 +00:00
testString: assert.strictEqual(latticePaths(20), 137846528820, '< code > latticePaths(20)< / code > should return 137846528820.');
2018-09-30 22:01:58 +00:00
```
< / section >
## Challenge Seed
< section id = 'challengeSeed' >
< div id = 'js-seed' >
```js
function latticePaths(gridSize) {
// Good luck!
return true;
}
latticePaths(4);
```
< / div >
< / section >
## Solution
< section id = 'solution' >
```js
function latticePaths(gridSize) {
let paths = 1;
for (let i = 0; i < gridSize ; i + + ) {
paths *= (2 * gridSize) - i;
paths /= i + 1;
}
return paths;
}
```
< / section >