¿Conocéis el juego del conecta 4? Es como el cuatro-en-raya, pero no puedes marcar cualquier casilla que te venga en gana: sólo puedes dejar caer tus fichas en un tablero sostenido verticalmente.
Si tenéis uno en casa, probablemente no sea tan grande.
En este problema te pedimos que programes un simulador de conecta 4 como el de la figura (6 filas y 8 columnas). Tu tu programa recibirá, alternativamente, las columnas (1-8) por las que se dejan caer las fichas de color rojo y amarillo, y deberá descubrir cuándo se forman cuatro fichas en línea (horizontal, vertical o diagonal) del mismo color.
Una secuencia de movimientos (números del 1 al 8) separados por espacios o saltos de línea. Pueden haber líneas vacías (líneas sin dígitos ni espacios) pero no habrá ninguna línea que contenga únicamente espacios.
Tu programa deberá interpretar los movimientos de los jugadores,
empezando por rojo. Además, deberá escribir INVALID si se
da un movimiento inválido (intentar poner una ficha en una columna
ocupada); escribir CONNECT4 si se forma un cuatro-en-raya;
escribir FULL si el tablero se llena sin haberse formado un
cuatro-en-raya; y escribir QUIT si la salida acaba antes de
haberse formado un cuatro-en-raya o haberse llenado el tablero.
Los movimientos inválidos deben ser ignorados (el jugador que comete
el movimiento inválido no pierde el turno). Cada vez que encuentres una
línea en blanco, escribe el estado actual del tablero, tal y como se
muestra en los ejemplos. Escribe también el tablero por la salida justo
después de producirse un CONNECT4 o un FULL, e
ignora el resto de la entrada.
Input
1 2 1 2 1 2 2 1 2 1 2 1 3 4 3 4 3 4 4 3 4 3 4 3 5 6 5 6 5 6 6 5 6 5 6 5 7 8 7 8 7 8 8 7 8 7 8 7
Output
|101010 0| |10101010| |10101010| |01010101| |01010101| |01010101| \--------/ FULL |10101010| |10101010| |10101010| |01010101| |01010101| |01010101| \--------/
Input
1 2 1 2 8 7 8 7 3 4 3 4 3 4 4 3 4 3 4 3 4 3 4 1 8
Output
| | | | | | | | |01 | |01 | \--------/ | | | | | | | | |01 10| |01 10| \--------/ | | | | | | | | |01 10| |01 10| \--------/ | 10 | | 10 | | 10 | | 01 | |0101 10| |0101 10| \--------/ INVALID INVALID INVALID | 10 | | 10 | | 10 | |0 01 | |0101 10| |0101 10| \--------/ QUIT
Input
1 2 3 4 5 6 7 8 8 7 6 5 4 3 2 1 1 2 3 4 5 6 7 8 8 7 6 5 4 3 2 1 1 2 3 4 5 6 7 8 8 7 6 5 4 3 2 1
Output
| | | | | | | | | | |01010101| \--------/ | | | | | | | | |10101010| |01010101| \--------/ | | | | | | |01010101| |10101010| |01010101| \--------/ CONNECT4 | | | | | 0| |01010101| |10101010| |01010101| \--------/
Input
1 2 1 2 1 2 1 2
Output
CONNECT4 | | | | |0 | |01 | |01 | |01 | \--------/