2018-10-10 18:03:03 -04:00
---
id: 5900f37b1000cf542c50fe8e
challengeType: 5
title: 'Problem 15: Lattice paths'
2019-08-28 16:26:13 +03:00
forumTopicId: 301780
2018-10-10 18:03:03 -04:00
localeTitle: 'Задача 15: Решетчатые пути'
---
## Description
2019-08-28 16:26:13 +03:00
< section id = 'description' >
Начиная в левом верхнем углу сетки 2 × 2 и только имея возможность двигаться вправо и вниз, ровно 6 маршрутов в нижний правый угол. < img class = "img-responsive center-block" alt = "диаграмма 6 2 на 2 сетки, показывающая все маршруты в нижний правый угол" src = "https://cdn-media-1.freecodecamp.org/imgr/1Atixoj.gif" > < p > Сколько таких маршрутов существует через заданный < code > gridSize< / code > ? < / p >
< / section >
2018-10-10 18:03:03 -04:00
## Instructions
2019-08-28 16:26:13 +03:00
< section id = 'instructions' >
2018-10-10 18:03:03 -04:00
< / section >
## Tests
< section id = 'tests' >
```yml
tests:
2019-08-28 16:26:13 +03:00
- text: < code > latticePaths(4)</ code > should return 70.
testString: assert.strictEqual(latticePaths(4), 70);
- text: < code > latticePaths(9)</ code > should return 48620.
testString: assert.strictEqual(latticePaths(9), 48620);
- text: < code > latticePaths(20)</ code > should return 137846528820.
testString: assert.strictEqual(latticePaths(20), 137846528820);
2018-10-10 18:03:03 -04: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
2019-08-28 16:26:13 +03:00
function latticePaths(gridSize) {
let paths = 1;
for (let i = 0; i < gridSize ; i + + ) {
paths *= (2 * gridSize) - i;
paths /= i + 1;
}
return paths;
}
2018-10-10 18:03:03 -04:00
```
2019-08-28 16:26:13 +03:00
2018-10-10 18:03:03 -04:00
< / section >