El banco ha sido forzado, y todos los matones de la mafia local tienen una coartada inusual: ¡estaban en casa jugando Connect 4! Para ayudar con la investigación, se le pide que escriba un programa para validar todos los paneles de Connect 4 que se han incautado con el fin de verificar que las posiciones son realmente posiciones de un juego válido de Connect 4 y que no se han reunido apresuradamente tan pronto como la policía llamó a la puerta.
Las reglas para conectar 4: jugadores R
y Y
turnarse para soltar fichas de su color en columnas de una cuadrícula de 7x6. Cuando un jugador deja caer una ficha en la columna, se cae para ocupar la posición más baja sin llenar en esa columna. Si un jugador logra obtener una carrera horizontal, vertical o diagonal de cuatro fichas de su color en el tablero, entonces gana y el juego termina inmediatamente.
Por ejemplo (con el R
inicio), la siguiente es una posición imposible de Connect 4.
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | |R| | | | |
| | |Y| | | | |
|R| |Y| | | | |
Su programa o función debe incluir una placa Connect 4 y devolver
- Un valor falso, que indica que la posición es imposible o
- Una cadena de números de 1 a 7, lo que indica una posible secuencia de movimientos que conducen a que la posición (las columnas se numeran
1
a7
de izquierda a derecha, y así la secuencia112
, por ejemplo, indica un movimiento rojo en la columna1
, seguido por un movimiento amarillo en columna1
, seguido de un movimiento rojo en columna2
). Si lo desea, puede elegir una numeración de columnas que no sea 1234567, siempre que lo especifique en su solución. Si desea devolver la lista en algún otro formato; por ejemplo, como una matriz[2, 4, 3, 1, 1, 3]
, eso también está bien, siempre que sea fácil ver cuáles son los movimientos.
Puede elegir leer el tablero en cualquier formato razonable, incluido el uso de letras que no sean R
y Y
para los jugadores, pero debe especificar qué jugador va primero. Puedes asumir que el tablero siempre será 6x7, con dos jugadores.
Puede suponer que las posiciones que recibe son al menos físicamente posibles de crear en una placa Connect 4 estándar; es decir, que no habrá piezas 'flotantes'. Puede suponer que el tablero no estará vacío.
Este es el código de golf, por lo que gana la respuesta más corta. Se aplican lagunas estándar.
Ejemplos
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | | --> 1234567 (one possible answer)
| | | | | | | |
|R|Y|R|Y|R|Y|R|
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | |R| | | | | --> false
| | |Y| | | | |
|R| |Y| | | | |
| | | | | | | |
| | |Y| | | | |
| | |R| | | | |
| | |Y| | | | | --> 323333 (only possible answer)
| | |R| | | | |
| |Y|R| | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | | --> false (this is the position arising after
| |Y|Y|Y|Y| | | the moves 11223344, but using those moves
| |R|R|R|R| | | the game would have ended once R made a 4)
| | | | | | | |
| | | | | | | |
|Y| | | | | | |
|R|Y| | | | | | --> 2134231211 (among other possibilities)
|R|R|Y| | | | |
|Y|R|R|Y| | | |
| | | | | | | |
| | | | | | | |
|Y| | | | | | |
|R|Y| | | | | | --> false (for example, 21342312117 does not
|R|R|Y| | | | | work, because Y has already made a diagonal 4)
|Y|R|R|Y| | |R|
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | | --> 112244553 or similar
|Y|Y| |Y|Y| | |
|R|R|R|R|R| | |