Mancala è il nome di una famiglia di giochi da tavolo che di solito coinvolge una serie di tazze piene di perline che i giocatori manipolano. Questa sfida utilizzerà una serie di regole specifiche per una variante del solitario del gioco.
Il tabellone è costituito da un "cestino" ad un'estremità, seguito da un numero infinito di tazze, numerate a partire da 1. Alcune tazze avranno un certo numero di perline. Se la n
coppa contiene esattamente n
perline, puoi "seminare" le perline. Seminare significa estrarre tutte le n
perle dalla tazza, quindi depositarle una alla volta in ogni tazza verso il cestino. L'ultimo tallone andrà nel cestino. Il giocatore vince quando tutte le perle sul tabellone sono nel cestino.
Chiaramente, ci sono molte schede che non sono vincibili, come se ci fosse esattamente un tallone nella seconda tazza. Non ci sono giochi legali perché tutte le coppe con 0 perline non possono essere seminate e la seconda coppa non ha abbastanza perline da seminare. Questo ovviamente non è divertente, quindi il tuo compito sarà quello di creare board vincibili.
Compito
Dato un numero intero positivo che rappresenta un numero di sfere emette un elenco di numeri interi non negativi che rappresentano il numero di sfere che dovrebbero essere inserite in ogni tazza per creare una scheda vincibile come descritto sopra. Questo elenco non deve contenere zero finali.
Per ogni dato numero di perline, esiste sempre esattamente una configurazione della scheda vincibile.
Dimostrazione
Questa è una dimostrazione di come giocare la tavola vincibile e input di 4. La tavola vincibile è [0, 1, 3]
. Iniziamo con l'unica mossa disponibile, seminando le perline dalla terza tazza per ottenere [1, 2, 0]
. Ora in realtà abbiamo una scelta, ma l'unica corretta semina la prima tazza, ottenendo: [0, 2, 0]
. Quindi seminiamo la seconda tazza cedendo [1, 0, 0]
e infine seminiamo di nuovo la prima tazza per ottenere tutte le tazze vuote.
Casi test:
1 => [1]
2 => [0, 2]
3 => [1, 2]
4 => [0, 1, 3]
5 => [1, 1, 3]
6 => [0, 0, 2, 4]
7 => [1, 0, 2, 4]
8 => [0, 2, 2, 4]
9 => [1, 2, 2, 4]
10 => [0, 1, 1, 3, 5]
11 => [1, 1, 1, 3, 5]
12 => [0, 0, 0, 2, 4, 6]
13 => [1, 0, 0, 2, 4, 6]
14 => [0, 2, 0, 2, 4, 6]
15 => [1, 2, 0, 2, 4, 6]
16 => [0, 1, 3, 2, 4, 6]
17 => [1, 1, 3, 2, 4, 6]
18 => [0, 0, 2, 1, 3, 5, 7]
19 => [1, 0, 2, 1, 3, 5, 7]
20 => [0, 2, 2, 1, 3, 5, 7]
Grazie mille a PeterTaylor per aver creato un programma per generare casi di test!