Você recebe uma grade do Connect 4 parcialmente preenchida (7x6).
O X
O X
X O X O O
X O X O X X
O X X X O O X
O O O X X O X
(A entrada pode ser fornecida como uma matriz 1D ou 2D e como letras ou números, etc.)
Assuma isso
- X começou o jogo.
- Ninguém ganhou ainda.
- Os jogadores podem não ter jogado bem até agora, mas agora eles vão empregar estratégias ótimas.
- A grade de entrada não está com defeito.
Você deve gerar um valor único que indique qual jogador vence (ou empata)
Código de desafio de golfe; o código mais curto vence. Seu programa não precisa calcular efetivamente a saída em uma quantidade razoável de tempo, mas você deve poder provar que a saída será obtida corretamente em uma quantidade finita de tempo.
code-golf
game
grid
board-game
ghosts_in_the_code
fonte
fonte
Respostas:
Perl,
119118117 bytesInclui +4 para
-0p
Dê placa giratória preenchida com espaços em STDIN (a gravidade puxa pedras para a direita)
connect4.pl
:Imprime
3
se o jogador se mover ganha,1
se o jogador se move perde e2
empata.Em perls mais antigos, você pode usar um literal
^S
para obter um byte. Se você não se importa com extrema ineficiência, pode deixar de fora a$$_||=
(tabela de transposição) e obter mais 6 bytes. Se você deixar de fora,$_=
ele mostrará onde jogar, em vez do resultado (jogue1
e ganhe, se houver), jogue2
e empate, se houver, ou jogue em qualquer3
e perca.Cria e avalia uma árvore minimax completa. Você ficará sem memória e tempo, a menos que o quadro já esteja razoavelmente bem preenchido.
fonte