sfondo
Hex è un gioco di strategia astratto per due giocatori giocato su un K×K
rombo di tessere esagonali. Due lati opposti del rombo sono di colore bianco, e gli altri due neri e i due giocatori, bianchi e neri, si alternano posizionando un gettone del loro colore su una tessera non occupata. Il giocatore che per primo riesce a costruire un percorso tra i lati opposti del loro colore è il vincitore. È noto che il gioco non può concludersi con un pareggio e che il primo giocatore ha una strategia vincente indipendentemente dalle dimensioni del tabellone (vedi la pagina Wikipedia per i dettagli).
L'obiettivo
In questa sfida, fissiamo le dimensioni della scheda K = 4
e rappresentiamo la scheda come la griglia seguente. Le linee spesse indicano piastrelle adiacenti.
Il tuo compito è quello di produrre una strategia vincente per il primo giocatore, che puoi scegliere di essere bianco o nero. Ciò significa che qualunque mossa legale faccia il giocatore avversario, il tuo gioco deve tradursi in una vittoria. Il tuo input è una posizione di gioco (la disposizione dei token sul tabellone) e il tuo output è una mossa legale, nel formato specificato di seguito. Se vuoi trovare tu stesso una strategia vincente, non leggere questo spoiler:
Schema di una possibile strategia vincente, supponendo che il bianco sia il primo. Selezionare prima 5. Successivamente, se si dispone di un percorso da 5 alla riga inferiore OPPURE il nero seleziona 0 o 1 in qualsiasi momento, rispondere selezionando quale di 0 o 1 è libero. Se il nero seleziona 9 o 13, selezionare 10 e quindi quello tra 14 o 15 è vacante. Se il nero non seleziona 9, 13 o 14, selezionare 9 e il successivo tra 13 o 14 vuoti. Se il nero seleziona 14, rispondere selezionando 15. Successivamente, selezionare 10 se è vuoto; se il nero seleziona 10, rispondi con 11. Se il nero seleziona 6, rispondi con 7 e il successivo tra 2 o 3 è vacante. Se il nero non seleziona 6, selezionalo, in modo da avere un percorso da 5 alla riga inferiore.
Ingresso e uscita
Il tuo input è una stringa di 16 caratteri WBE
, che significa bianco, nero e vuoto. Rappresentano le tessere del tabellone, come elencato sopra. Puoi scegliere il metodo di input (che determina anche il tuo metodo di output) tra i seguenti:
- Ingresso da STDIN, uscita a STDOUT.
- Input come argomento della riga di comando, output su STDOUT.
- Input come 16 argomenti a riga di comando a carattere singolo, output su STDOUT.
- Input come argomento della funzione denominata, output come valore di ritorno.
L'output rappresenta il riquadro su cui posizionare il token successivo, poiché è il tuo turno di muoversi. Puoi scegliere tra i seguenti formati di output:
- Un indice a base zero (come usato nella figura sopra).
- Un indice basato su uno.
- La stringa di input con una
E
sostituita da qualunque diW
oB
hai scelto per il tuo giocatore.
Regole
La tua strategia deve essere deterministica. Non è necessario gestire correttamente posizioni di gioco non raggiungibili dal tabellone vuoto usando la propria strategia o posizioni che stanno già vincendo per entrambi i giocatori e si può schiantarsi su di esse. Viceversa, nei board raggiungibili utilizzando la tua strategia, devi restituire una mossa legale.
Questo è code-golf, quindi vince il numero di byte più basso. Le scappatoie standard non sono ammesse.
analisi
Ho scritto un controller Python 3 per la convalida delle voci, poiché sarebbe estremamente noioso da fare a mano. Puoi trovarlo qui . Supporta i primi tre formati di input e le funzioni di Python 3 (le funzioni in altre lingue devono essere inserite nei programmi), tutti e tre i formati di output ed entrambi i lettori. Se una strategia non sta vincendo, produrrà una partita persa trovata, quindi puoi modificare il tuo programma.
Incorrect response 'WWWWWWWWBBBBBBBB' to message 'WWWWWWWWBBBBBBBB'.
Avrei dovuto vincere molto tempo fa o sbaglio?