* 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>
		
			
				
	
	
		
			54 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			54 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| ---
 | |
| id: 5900f4991000cf542c50ffab
 | |
| title: 'Problem 301: Nim'
 | |
| challengeType: 5
 | |
| forumTopicId: 301955
 | |
| dashedName: problem-301-nim
 | |
| ---
 | |
| 
 | |
| # --description--
 | |
| 
 | |
| Nim is a game played with heaps of stones, where two players take it in turn to remove any number of stones from any heap until no stones remain.
 | |
| 
 | |
| We'll consider the three-heap normal-play version of Nim, which works as follows:
 | |
| 
 | |
| -   At the start of the game there are three heaps of stones.
 | |
| -   On his turn the player removes any positive number of stones from any single heap.
 | |
| -   The first player unable to move (because no stones remain) loses.
 | |
| 
 | |
| If (n1,n2,n3) indicates a Nim position consisting of heaps of size n1, n2 and n3 then there is a simple function X(n1,n2,n3) — that you may look up or attempt to deduce for yourself — that returns: zero if, with perfect strategy, the player about to move will eventually lose; or non-zero if, with perfect strategy, the player about to move will eventually win. For example X(1,2,3) = 0 because, no matter what the current player does, his opponent can respond with a move that leaves two heaps of equal size, at which point every move by the current player can be mirrored by his opponent until no stones remain; so the current player loses. To illustrate:
 | |
| 
 | |
| -   current player moves to (1,2,1)
 | |
| -   opponent moves to (1,0,1)
 | |
| -   current player moves to (0,0,1)
 | |
| -   opponent moves to (0,0,0), and so wins.
 | |
| 
 | |
| For how many positive integers n ≤ 230 does X(n,2n,3n) = 0 ?
 | |
| 
 | |
| # --hints--
 | |
| 
 | |
| `euler301()` should return 2178309.
 | |
| 
 | |
| ```js
 | |
| assert.strictEqual(euler301(), 2178309);
 | |
| ```
 | |
| 
 | |
| # --seed--
 | |
| 
 | |
| ## --seed-contents--
 | |
| 
 | |
| ```js
 | |
| function euler301() {
 | |
| 
 | |
|   return true;
 | |
| }
 | |
| 
 | |
| euler301();
 | |
| ```
 | |
| 
 | |
| # --solutions--
 | |
| 
 | |
| ```js
 | |
| // solution required
 | |
| ```
 |