| 
									
										
										
										
											2018-09-30 23:01:58 +01:00
										 |  |  |  | --- | 
					
						
							|  |  |  |  | id: 5900f3701000cf542c50fe83 | 
					
						
							|  |  |  |  | title: 'Problem 4: Largest palindrome product' | 
					
						
							| 
									
										
										
										
											2020-11-27 19:02:05 +01:00
										 |  |  |  | challengeType: 5 | 
					
						
							| 
									
										
										
										
											2019-08-05 09:17:33 -07:00
										 |  |  |  | forumTopicId: 302065 | 
					
						
							| 
									
										
										
										
											2021-01-13 03:31:00 +01:00
										 |  |  |  | dashedName: problem-4-largest-palindrome-product | 
					
						
							| 
									
										
										
										
											2018-09-30 23:01:58 +01:00
										 |  |  |  | --- | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-27 19:02:05 +01:00
										 |  |  |  | # --description--
 | 
					
						
							| 
									
										
										
										
											2020-02-28 21:39:47 +09:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-30 23:01:58 +01:00
										 |  |  |  | A palindromic number reads the same both ways. The largest palindrome made from the product of two 2-digit numbers is 9009 = 91 × 99. | 
					
						
							| 
									
										
										
										
											2020-02-28 21:39:47 +09:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | Find the largest palindrome made from the product of two `n`-digit numbers. | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-27 19:02:05 +01:00
										 |  |  |  | # --hints--
 | 
					
						
							| 
									
										
										
										
											2018-09-30 23:01:58 +01:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-27 19:02:05 +01:00
										 |  |  |  | `largestPalindromeProduct(2)` should return a number. | 
					
						
							| 
									
										
										
										
											2018-09-30 23:01:58 +01:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-27 19:02:05 +01:00
										 |  |  |  | ```js | 
					
						
							|  |  |  |  | assert(typeof largestPalindromeProduct(2) === 'number'); | 
					
						
							|  |  |  |  | ``` | 
					
						
							| 
									
										
										
										
											2018-09-30 23:01:58 +01:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-27 19:02:05 +01:00
										 |  |  |  | `largestPalindromeProduct(2)` should return 9009. | 
					
						
							| 
									
										
										
										
											2018-09-30 23:01:58 +01:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-27 19:02:05 +01:00
										 |  |  |  | ```js | 
					
						
							|  |  |  |  | assert.strictEqual(largestPalindromeProduct(2), 9009); | 
					
						
							| 
									
										
										
										
											2018-09-30 23:01:58 +01:00
										 |  |  |  | ``` | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-27 19:02:05 +01:00
										 |  |  |  | `largestPalindromeProduct(3)` should return 906609. | 
					
						
							| 
									
										
										
										
											2018-09-30 23:01:58 +01:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-27 19:02:05 +01:00
										 |  |  |  | ```js | 
					
						
							|  |  |  |  | assert.strictEqual(largestPalindromeProduct(3), 906609); | 
					
						
							|  |  |  |  | ``` | 
					
						
							| 
									
										
										
										
											2018-09-30 23:01:58 +01:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-27 19:02:05 +01:00
										 |  |  |  | # --seed--
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | ## --seed-contents--
 | 
					
						
							| 
									
										
										
										
											2018-09-30 23:01:58 +01:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | ```js | 
					
						
							|  |  |  |  | function largestPalindromeProduct(n) { | 
					
						
							| 
									
										
										
										
											2020-09-15 09:57:40 -07:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-30 23:01:58 +01:00
										 |  |  |  |   return true; | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | largestPalindromeProduct(3); | 
					
						
							|  |  |  |  | ``` | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-27 19:02:05 +01:00
										 |  |  |  | # --solutions--
 | 
					
						
							| 
									
										
										
										
											2018-09-30 23:01:58 +01:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | ```js | 
					
						
							|  |  |  |  | const largestPalindromeProduct = (digit)=>{ | 
					
						
							|  |  |  |  |   let start = 1; | 
					
						
							|  |  |  |  |   let end = Number(`1e${digit}`) - 1; | 
					
						
							|  |  |  |  |  let palindrome = []; | 
					
						
							|  |  |  |  |   for(let i=start;i<=end;i++){ | 
					
						
							|  |  |  |  |     for(let j=start;j<=end;j++){ | 
					
						
							|  |  |  |  |       let product = i*j; | 
					
						
							|  |  |  |  |       let palindromeRegex = /\b(\d)(\d?)(\d?).?\3\2\1\b/gi; | 
					
						
							|  |  |  |  |       palindromeRegex.test(product) && palindrome.push(product); | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |  } | 
					
						
							|  |  |  |  |  return Math.max(...palindrome); | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | ``` |