El juego de los barquitos se juega sobre un tablero de 10× 10 , donde las filas se identifican con letras (de la a a la j) y las columnas se numeran con números del 1 al 10.
Cada uno de los dos jugadores que participan tiene un tablero.
Sobre las casillas del tablero cada jugador dispone un total de 10
barcos, que ocupan 2, 3, 4 o 5 casillas contiguas en línea recta.
En concreto, cada jugador dispone de una flota formada por:
1 barco de longitud 5,
2 de longitud 4,
3 de longitud 3, y
4 de longitud 2.
Los barcos no se pueden tocar entre ellos ni se pueden
posicionar de cualquier forma: siempre han de definir una línea
continua horizontal o vertical, pero nunca diagonal. Siempre que se
cumplan estas restricciones, los jugador pueden disponer sus
barcos en cualquier lugar del tablero.
Después, cada jugador intentará hundir los barcos del otro jugador
mediante ’disparos’ directos a una coordenada del tablero contrario.
Entrada
La entrada tiene dos partes:
Por ejemplo, el barco definido por a1 3 h ocupa las casillas a1 , a2 , a3, mientras que el barco definido por a1 3 v ocupa las casillas a1, b1, c1.
Salida
Seguid el formato indicado en los ejemplos.
Observación
typedef vector< vector<bool> > Tablero;
distancia((i,j), (i′,j′)) = max{|i−i′|, |j−j′|} |
Input
a1 5 h a10 4 v g10 4 v j5 3 h j1 3 h f1 3 v c2 2 h e4 2 v h5 2 h a7 2 h a1 a5 a6 d8 e8 f8 e6 e7
Output
12345678910 a XXXXX.XX.X b .........X c .XX......X d .........X e ...X...... f X..X...... g X........X h X...XX...X i .........X j XXX.XXX..X a1 tocado! a5 tocado! a6 agua! barco mas cercano a distancia 1 d8 agua! barco mas cercano a distancia 2 e8 agua! barco mas cercano a distancia 2 f8 agua! barco mas cercano a distancia 2 e6 agua! barco mas cercano a distancia 2 e7 agua! barco mas cercano a distancia 3