Se le proporciona una red Connect 4 parcialmente llena (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
(La entrada se puede proporcionar como una matriz 1D o 2D y como letras o números, etc.)
Asumir que
- X comenzó el juego.
- Nadie ha ganado todavía.
- Los jugadores pueden no haber jugado bien hasta ahora, pero ahora en adelante ambos emplearán estrategias óptimas.
- La cuadrícula de entrada no es defectuosa.
Debe generar un único valor que indique qué jugador gana (o un empate)
Código de desafío de golf; entonces el código más corto gana. Su programa no tiene que calcular la salida real en un período de tiempo razonable, pero debe poder demostrar que la salida se obtendrá correctamente en un período de tiempo limitado.
code-golf
game
grid
board-game
fantasmas_en_el_código
fuente
fuente
Respuestas:
Perl,
119118117 bytesIncluye +4 para
-0p
Dé el tablero girado acolchado con espacios en STDIN (la gravedad tira piedras a la derecha)
connect4.pl
:Imprime
3
si el jugador que se mueve gana,1
si el jugador que se mueve pierde y2
para un empate.En perls anteriores, puede usar un literal
^S
para obtener un byte. Si no le importa la ineficiencia extrema , puede omitir la$$_||=
(tabla de transposición) y ganar 6 bytes más. Si deja de lado$_=
, le mostrará dónde jugar en lugar del resultado (juegue1
y gane si hay uno, juegue2
y dibuje si hay uno o juegue en alguno3
y pierda)Construye y evalúa un árbol minimax completo. Se le acabará la memoria y el tiempo a menos que el tablero ya esté razonablemente bien lleno.
fuente