Seu objetivo é escrever um programa que resolva qualquer quebra-cabeça do Mastermind em 6 ou menos movimentos.
fundo
Mastermind é um jogo de tabuleiro. O objetivo do jogo é adivinhar exatamente a combinação (cores e ordem) de quatro pinos coloridos escondidos pelo outro jogador. Quando um palpite é feito, o outro jogador responde com 0 a 4 pinos brancos e ou vermelhos. Um peg vermelho é onde a cor e o local estão corretos. Uma cavilha branca é o local onde a cor é representada nas peças restantes, mas está no local incorreto. Se houver cores duplicadas no palpite, haverá apenas um peg atribuído por cor correspondente no segredo. (Então - se o segredo contivesse 1 azul e o palpite tivesse 2 azuis com um no local correto, haveria um pino vermelho). Existem 6 cores diferentes e duplicatas podem ser usadas.
Por exemplo, um jogo pode ser o seguinte: (Supondo que a solução seja Vermelho Verde Verde Azul)
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
As regras são expandidas na Wikipedia
Exigências
- O programa deve ler de stdin e gravar em stdout
- Vou usar números para simplificar, em vez de cores. A combinação de adivinhação será de 4 números entre 1 e 6
Eles devem emitir suas suposições como uma série de 4 números separados por espaço de 1 a 6, concluindo com uma nova linha. Por exemplo:
1 5 2 2 \ n
O programa receberá subseqüentemente como entrada após seu palpite 2 números inteiros entre 0 e 4 separados por um espaço e concluindo com uma nova linha. O primeiro será a quantidade de pinos brancos, o segundo a quantidade de pinos vermelhos.
- Em uma entrada de "0 4" (4 pinos vermelhos), o programa deve terminar
- O programa deve ser capaz de resolver qualquer quebra-cabeça em menos de 6 turnos (o seu programa fornece saída, seguido pela entrada de resposta é 1 turno). Não há bônus (devido à complexidade da prova) por poder resolvê-lo em menos.
- A solução deve ser completamente interna e incluída na fonte. Bibliotecas padrão são permitidas apenas. Portanto, a solução não pode depender de outros arquivos (como dicionários) ou da Internet.
Exemplo de entrada / saída
> 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
Pontuação
- Este é o código Golf puro e simples . A solução mais curta em bytes vence.
Esta é minha primeira pergunta sobre o Code Golf. Peço desculpas se fiz algo errado, mas tentei o máximo possível para garantir que não haja ambiguidade e impedir o máximo de regras possível. Se eu fui ambíguo ou incerto, sinta-se à vontade para fazer perguntas.
1 2 3 4retornar0 1?