Il tuo obiettivo è scrivere un programma che risolva qualsiasi enigma di Mastermind in 6 o meno mosse.
sfondo
Mastermind è un gioco da tavolo. L'obiettivo del gioco è indovinare esattamente la combinazione (colori e ordine) di 4 pioli colorati nascosti dall'altro giocatore. Quando viene fatta un'ipotesi, l'altro giocatore risponde con un numero compreso tra 0 e 4 pioli bianchi e o rossi. Un piolo rosso è dove il colore e la posizione sono corretti. Un piolo bianco è dove il colore è rappresentato nei pezzi rimanenti, ma si trova nella posizione errata. Se nell'ipotesi ci sono colori duplicati, nel segreto verrà assegnato un solo piolo per colore corrispondente. (Quindi - se il segreto contenesse 1 Blu, e l'ipotesi avesse 2 blu con uno nella posizione corretta, ci sarebbe un piolo rosso dato). Esistono 6 colori diversi e possono essere utilizzati duplicati.
Ad esempio, un gioco potrebbe essere il seguente: (Supponendo che la soluzione sia Rosso Verde Verde Blu)
1: Blue Purple Black Green - 2 white pegs
2: Green Red Black Blue - 2 white pegs, 1 red peg
3: Green Green Green Blue - 3 red pegs
4: Red Green Green Blue - 4 red pegs
Le regole sono estese su Wikipedia
Requisiti
- Il programma deve leggere da stdin e scrivere su stdout
- Userò i numeri per semplicità invece di colori. La combinazione da indovinare sarà di 4 numeri tra 1 e 6
Devono emettere le loro ipotesi come una serie di 4 numeri separati da spazio da 1 a 6 che si concludono con una nuova riga. Per esempio:
1 5 2 2 \ n
Il programma riceverà successivamente come input dopo aver indovinato 2 numeri interi compresi tra 0 e 4 separati da uno spazio e conclusi con una nuova riga. Il primo sarà la quantità di pioli bianchi, il secondo la quantità di pioli rossi.
- Con un input di "0 4" (4 pioli rossi), il programma deve terminare
- Il programma deve essere in grado di risolvere qualsiasi enigma in meno di 6 turni (il programma che dà l'output, seguito dall'input di risposta è di 1 turno). Non vi è alcun bonus (a causa della complessità della prova) per essere in grado di risolverlo in meno.
- La soluzione deve essere completamente interna e inclusa nell'origine. Sono ammesse solo le librerie standard. Pertanto, la soluzione potrebbe non fare affidamento su altri file (come dizionari) o su Internet.
Esempio di input / output
> is your programs output
< is the responding input
Solution is 1 5 6 6
> 1 2 3 4
< 0 1
> 4 1 6 6
< 1 2
> 1 6 5 6
< 2 2
> 1 5 6 6
< 0 4
punteggio
- Questo è puro e semplice Code Golf . Vince la soluzione più breve in byte .
Questa è la mia prima domanda su Code Golf. Mi scuso se ho fatto qualcosa di sbagliato, ma ho cercato nel miglior modo possibile di garantire l'assenza di ambiguità e di prevenire quante più norme possibili legiferare. Se sono stato ambiguo o poco chiaro, non esitare a porre domande.
1 2 3 4tornare0 1?