53 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			53 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| ---
 | ||
| id: 5900f4b71000cf542c50ffca
 | ||
| title: 'Problema 331: Viradas cruzadas'
 | ||
| challengeType: 5
 | ||
| forumTopicId: 301989
 | ||
| dashedName: problem-331-cross-flips
 | ||
| ---
 | ||
| 
 | ||
| # --description--
 | ||
| 
 | ||
| Discos NxN são colocados em um tabuleiro de jogo quadrado. Cada disco tem um lado preto e um lado branco.
 | ||
| 
 | ||
| A cada turno você pode escolher um disco e virar todos os discos na mesma linha e na mesma coluna que este disco: portanto, $2 × N - 1$ discos são virados. O jogo termina quando todos os discos mostrarem o lado branco. O exemplo a seguir mostra um jogo em um tabuleiro 5×5.
 | ||
| 
 | ||
| <img class="img-responsive center-block" alt="animação mostrando o jogo no tabuleiro 5x5" src="https://cdn.freecodecamp.org/curriculum/project-euler/cross-flips.gif" style="background-color: white; padding: 10px;" />
 | ||
| 
 | ||
| Pode-se provar que 3 é o número mínimo de turnos para terminar este jogo.
 | ||
| 
 | ||
| O disco do canto inferior esquerdo no tabuleiro $N×N$ tem coordenadas (0, 0). O disco inferior direito tem coordenadas ($N - 1$,$0$) e o disco superior esquerdo têm coordenadas ($0$,$N - 1$).
 | ||
| 
 | ||
| Considere $C_N$ como sendo a seguinte configuração de tabuleiro com $N × N$ discos: um disco em ($x$, $y$) satisfazendo $N - 1 \le \sqrt{x^2 + y^2} \lt N$, shows exibe o lado preto; do contrário, ele exibe o lado branco. $C_5$ é mostrado acima.
 | ||
| 
 | ||
| Considere $T(N)$ como o número mínimo de turnos para concluir um jogo começando da configuração $C_N$ ou 0 se a configuração $C_N$ não tiver resolução. Mostramos que $T(5) = 3$. Você também é informado de que $T(10) = 29$ e $T(1.000) = 395.253$.
 | ||
| 
 | ||
| Encontre $\displaystyle \sum_{i = 3}^{31} T(2^i - i)$.
 | ||
| 
 | ||
| # --hints--
 | ||
| 
 | ||
| `crossFlips()` deve retornar `467178235146843500`.
 | ||
| 
 | ||
| ```js
 | ||
| assert.strictEqual(crossFlips(), 467178235146843500);
 | ||
| ```
 | ||
| 
 | ||
| # --seed--
 | ||
| 
 | ||
| ## --seed-contents--
 | ||
| 
 | ||
| ```js
 | ||
| function crossFlips() {
 | ||
| 
 | ||
|   return true;
 | ||
| }
 | ||
| 
 | ||
| crossFlips();
 | ||
| ```
 | ||
| 
 | ||
| # --solutions--
 | ||
| 
 | ||
| ```js
 | ||
| // solution required
 | ||
| ```
 |