* feat(tools): add seed/solution restore script * chore(curriculum): remove empty sections' markers * chore(curriculum): add seed + solution to Chinese * chore: remove old formatter * fix: update getChallenges parse translated challenges separately, without reference to the source * chore(curriculum): add dashedName to English * chore(curriculum): add dashedName to Chinese * refactor: remove unused challenge property 'name' * fix: relax dashedName requirement * fix: stray tag Remove stray `pre` tag from challenge file. Signed-off-by: nhcarrigan <nhcarrigan@gmail.com> Co-authored-by: nhcarrigan <nhcarrigan@gmail.com>
		
			
				
	
	
		
			78 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			78 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| ---
 | ||
| id: 5900f3941000cf542c50fea7
 | ||
| title: 'Problem 40: Champernowne''s constant'
 | ||
| challengeType: 5
 | ||
| forumTopicId: 302066
 | ||
| dashedName: problem-40-champernownes-constant
 | ||
| ---
 | ||
| 
 | ||
| # --description--
 | ||
| 
 | ||
| An irrational decimal fraction is created by concatenating the positive integers:
 | ||
| 
 | ||
| 0.12345678910**1**112131415161718192021...
 | ||
| 
 | ||
| It can be seen that the 12<sup>th</sup> digit of the fractional part is 1.
 | ||
| 
 | ||
| If *d<sub>n</sub>* represents the *n*<sup>th</sup> digit of the fractional part, find the value of the following expression.
 | ||
| 
 | ||
| d<sub>1</sub> × d<sub>10</sub> × d<sub>100</sub> × d<sub>1000</sub> × d<sub>10000</sub> × d<sub>100000</sub> × d<sub>1000000</sub>
 | ||
| 
 | ||
| # --hints--
 | ||
| 
 | ||
| `champernownesConstant(100)` should return a number.
 | ||
| 
 | ||
| ```js
 | ||
| assert(typeof champernownesConstant(100) === 'number');
 | ||
| ```
 | ||
| 
 | ||
| `champernownesConstant(100)` should return 5.
 | ||
| 
 | ||
| ```js
 | ||
| assert.strictEqual(champernownesConstant(100), 5);
 | ||
| ```
 | ||
| 
 | ||
| `champernownesConstant(1000)` should return 15.
 | ||
| 
 | ||
| ```js
 | ||
| assert.strictEqual(champernownesConstant(1000), 15);
 | ||
| ```
 | ||
| 
 | ||
| `champernownesConstant(1000000)` should return 210.
 | ||
| 
 | ||
| ```js
 | ||
| assert.strictEqual(champernownesConstant(1000000), 210);
 | ||
| ```
 | ||
| 
 | ||
| # --seed--
 | ||
| 
 | ||
| ## --seed-contents--
 | ||
| 
 | ||
| ```js
 | ||
| function champernownesConstant(n) {
 | ||
| 
 | ||
|   return true;
 | ||
| }
 | ||
| 
 | ||
| champernownesConstant(100);
 | ||
| ```
 | ||
| 
 | ||
| # --solutions--
 | ||
| 
 | ||
| ```js
 | ||
| function champernownesConstant(n) {
 | ||
|   let fractionalPart = '';
 | ||
|   for (let i = 0; fractionalPart.length <= n; i++) {
 | ||
|     fractionalPart += i.toString();
 | ||
|   }
 | ||
| 
 | ||
|   let product = 1;
 | ||
|   for (let i = 0; i < n.toString().length; i++) {
 | ||
|     const index = 10 ** i;
 | ||
|     product *= parseInt(fractionalPart[index], 10);
 | ||
|   }
 | ||
| 
 | ||
|   return product;
 | ||
| }
 | ||
| ```
 |