¿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.
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.
Entrada
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.
Salida
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 | \--------/