Introdução
O Nine Mens's Morris (também chamado Mills) é um jogo de tabuleiro para dois jogadores, que é jogado no seguinte tabuleiro (imagem retirada da página da Wikipedia vinculada):
Cada jogador tem 9 homens, coloridos em preto e branco. As regras concretas não são importantes para esse desafio, mas verifique a página da Wikipedia se você estiver interessado.
O desafio
Dada uma grade como entrada, o que representa um certo boardstate, a saída do moinho de contagem total m
com 0<=m<=8
.
Três homens da mesma cor formam um moinho quando estão em uma linha reta de pontos conectados. b2
a f2
não é um moinho, uma vez que os homens são de cor diferente. Também d2
para d5
não formar um moinho desde os três pontos têm de ser ligados.
A placa na imagem acima contém dois moinhos, por exemplo. Um de f2
para f6
e um de e3
para e5
.
Entrada
A placa é representada como uma grade 2D com 24 pontos, que são conectados como mostrado na imagem de exemplo acima. O exemplo usa letras de a-g
para as colunas e números 1-7
para as linhas, mas você pode escolher qualquer formato de entrada razoável, desde que mapeie 24 coordenadas exclusivas para um dos seguintes estados:
- Esvaziar
- Lomografo: black
- Tirada por branco
A representação do concreto depende de você; você não está restrito a "b" ou "w" para as cores.
Além disso, sua entrada pode não conter nenhuma informação adicional.
Notas Adicionais
- Você não precisa mapear os pontos por nenhum tipo de valor. Se você deseja pegar a entrada como uma matriz 2D, tudo bem também. Mas lembre-se de que nem todos os pontos são usados e que você deve considerar as conexões entre eles.
- A entrada pode estar vazia; nesse caso, você deve gerar zero (placa vazia -> sem fresas).
- Como cada jogador tem 9 homens, a entrada nunca conterá mais de 18 pontos conquistados.
- Você pode omitir pontos vazios na entrada e, portanto, apenas os pontos de entrada que são capturados.
- A entrada pode ser solicitada de qualquer forma. Você não pode confiar em um pedido específico.
- Você pode assumir que a entrada sempre será válida. Isso significa que não haverá mais de 9 homens de cada cor e que cada ponto será único.
Regras
- Esclareça qual formato de entrada você usa em sua solução. É altamente recomendável fornecer um exemplo de execução do seu programa.
- Função ou programa completo permitido.
- Regras padrão para entrada / saída.
- Aplicam-se brechas padrão .
- Isso é código-golfe , portanto, a menor contagem de bytes vence. O desempatador é uma inscrição anterior.
Casos de teste
O formato de entrada aqui é uma lista de tuplas com as coordenadas, como no exemplo acima, como primeiro elemento e o estado do segundo elemento do ponto. Um ponto tomado por branco é marcado como "w" e um ponto tomado por preto como "b". Todos os outros pontos são deixados de fora e estão vazios.
[("a4", "w"), ("b2", "b"), ("b4", "b"), ("c4", "b"), ("d1", "w") , ("d2", "w"), ("e3", "w"), ("e4", "w"), ("e5", "w"), ("f2", "b") , ("f4", "b"), ("f6", "b"), ("g4", "w")] -> 2 [("a1", "b"), ("a4", "b"), ("a7", "b"), ("b4", "b"), ("c4", "b") , ("d3", "w"), ("d2", "w"), ("d1", "w")] -> 3 [] -> 0 [("b4", "b"), ("a4", b "), (" c4 ", w")] -> 0 [("b4", "b"), ("a4", b "), (" c4 ", b")] -> 1 [("a1", "b"), ("a4", "b"), ("a7", "b"), ("b2", "b"), ("b4", "b") , ("b6", "b"), ("c3", "b"), ("c4", "b"), ("c5", "b"), ("e3", "w") , ("e4", "w"), ("e5", "w"), ("f2", "w"), ("f4", "w"), ("f6", "w") , ("g1", "w"), ("g4", "w"), ("g7", "w")] -> 8
Feliz codificação!
d3
e d5
não está conectado. Regras dizem: Three men of the same color form a mill when they are in a straight row of connected points.
. Adicionei alguns exemplos nesta seção para deixar claro, obrigado pelo comentário!