69 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			69 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
|   | --- | |||
|  | id: 5900f37b1000cf542c50fe8e | |||
|  | title: 'Problem 15: Lattice paths' | |||
|  | challengeType: 5 | |||
|  | forumTopicId: 301780 | |||
|  | dashedName: problem-15-lattice-paths | |||
|  | --- | |||
|  | 
 | |||
|  | # --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. | |||
|  | 
 | |||
|  | <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/project-euler/1Atixoj.gif" style="background-color: white; padding: 10px;" /> | |||
|  | 
 | |||
|  | How many such routes are there through a given `gridSize`? | |||
|  | 
 | |||
|  | # --hints--
 | |||
|  | 
 | |||
|  | `latticePaths(4)` should return a number. | |||
|  | 
 | |||
|  | ```js | |||
|  | assert(typeof latticePaths(4) === 'number'); | |||
|  | ``` | |||
|  | 
 | |||
|  | `latticePaths(4)` should return 70. | |||
|  | 
 | |||
|  | ```js | |||
|  | assert.strictEqual(latticePaths(4), 70); | |||
|  | ``` | |||
|  | 
 | |||
|  | `latticePaths(9)` should return 48620. | |||
|  | 
 | |||
|  | ```js | |||
|  | assert.strictEqual(latticePaths(9), 48620); | |||
|  | ``` | |||
|  | 
 | |||
|  | `latticePaths(20)` should return 137846528820. | |||
|  | 
 | |||
|  | ```js | |||
|  | assert.strictEqual(latticePaths(20), 137846528820); | |||
|  | ``` | |||
|  | 
 | |||
|  | # --seed--
 | |||
|  | 
 | |||
|  | ## --seed-contents--
 | |||
|  | 
 | |||
|  | ```js | |||
|  | function latticePaths(gridSize) { | |||
|  | 
 | |||
|  |   return true; | |||
|  | } | |||
|  | 
 | |||
|  | latticePaths(4); | |||
|  | ``` | |||
|  | 
 | |||
|  | # --solutions--
 | |||
|  | 
 | |||
|  | ```js | |||
|  | function latticePaths(gridSize) { | |||
|  |   let paths = 1; | |||
|  | 
 | |||
|  |   for (let i = 0; i < gridSize; i++) { | |||
|  |     paths *= (2 * gridSize) - i; | |||
|  |     paths /= i + 1; | |||
|  |   } | |||
|  |   return paths; | |||
|  | } | |||
|  | ``` |