2021-06-15 00:49:18 -07:00
---
id: 5900f5371000cf542c51004a
2022-02-23 18:40:00 +05:30
title: 'Problema 459: gioco flipping'
2021-06-15 00:49:18 -07:00
challengeType: 5
forumTopicId: 302133
dashedName: problem-459-flipping-game
---
# --description--
2022-02-23 18:40:00 +05:30
Il gioco di flipping è un gioco di due giocatori giocato su un tavolo quadrato $N$ per $N$.
2021-06-15 00:49:18 -07:00
2022-02-23 18:40:00 +05:30
Ogni quadrato contiene un disco con un lato bianco e un lato nero.
2021-06-15 00:49:18 -07:00
2022-02-23 18:40:00 +05:30
Il gioco inizia con tutti i dischi che mostrano il loro lato bianco.
2021-06-15 00:49:18 -07:00
2022-02-23 18:40:00 +05:30
Un turno consiste nel capovolgere tutti i dischi in un rettangolo con le seguenti proprietà:
2021-06-15 00:49:18 -07:00
2022-02-23 18:40:00 +05:30
- l'angolo in alto a destra del rettangolo contiene un disco bianco
- la larghezza del rettangolo è un quadrato perfetto (1, 4, 9, 16, ...)
- l'altezza del rettangolo è un numero triangolare (1, 3, 6, 10, ...)
2021-06-15 00:49:18 -07:00
2022-02-23 18:40:00 +05:30
< img class = "img-responsive center-block" alt = "capovolgendo tutti i dischi in un rettangolo 4x3 su una tabella 5x5" src = "https://cdn.freecodecamp.org/curriculum/project-euler/flipping-game-1.png" style = "background-color: white; padding: 10px;" / >
2021-06-15 00:49:18 -07:00
2022-02-23 18:40:00 +05:30
I giocatori si alternano nei turni. Un giocatore vince girando la griglia in modo che sia tutta nera.
2021-06-15 00:49:18 -07:00
2022-02-23 18:40:00 +05:30
Sia $W(N)$ il numero di mosse vincenti per il primo giocatore su una scacchiera $N$ x $N$ con tutti i dischi bianchi, supponendo un gioco perfetto.
$W(1) = 1$, $W(2) = 0$, $W(5) = 8$ and $W({10}^2) = 31\\,395$.
Per $N = 5$, le prime otto mosse vincenti del giocatore sono:
< img class = "img-responsive center-block" alt = "le otto prime mosse vincenti per N = 5" src = "https://cdn.freecodecamp.org/curriculum/project-euler/flipping-game-2.png" style = "background-color: white; padding: 10px;" / >
Trova $W({10}^6)$.
2021-06-15 00:49:18 -07:00
# --hints--
2022-02-23 18:40:00 +05:30
`flippingGame()` dovrebbe restituire `3996390106631` .
2021-06-15 00:49:18 -07:00
```js
2022-02-23 18:40:00 +05:30
assert.strictEqual(flippingGame(), 3996390106631);
2021-06-15 00:49:18 -07:00
```
# --seed--
## --seed-contents--
```js
2022-02-23 18:40:00 +05:30
function flippingGame() {
2021-06-15 00:49:18 -07:00
return true;
}
2022-02-23 18:40:00 +05:30
flippingGame();
2021-06-15 00:49:18 -07:00
```
# --solutions--
```js
// solution required
```