Debes escribir un programa que analice diversas posiciones de ajedrez, muy simplificadas. En concreto, el jugador negro sólo dispone de su rey, mientras que el jugador blanco sólo dispone de torres, alfiles y damas. Recuerda que los reyes se mueven horizontal, vertical, y diagonalmente, dando un solo paso. Las otras fichas se pueden mover más de una casilla a la vez: las torres, horizontal y verticalmente; los alfiles, diagonalmente; las damas, horizontal, vertical, y diagonalmente.
Tu programa debe determinar todas las posiciones a las que se puede mover el rey negro, esto es, todas las posiciones vecinas del rey negro que no están amenazadas por ninguna pieza blanca. (Si el rey tiene una pieza enemiga a su alrededor, y ésta no está defendida, el rey puede moverse a esa posición “matando” a la pieza enemiga.) Si el rey negro no tiene ningun movimiento válido, debes escribir “jaque mate” si la posición donde se encuentra el rey está amenazada, y “ahogado” si no lo está.
Entrada
La entrada comienza con el número de tableros n. Siguen n tableros. Cada tablero consiste en la posición del rey negro, seguida del número de piezas blancas m (entre 0 y 63), seguido de m piezas, cada una de las cuales definida con su tipo (T, A o D) y su posición. Las posiciones se definen con una columna (una letra entre a y h) y una fila (un número entre 1 y 8). Todas las piezas de un tablero se encuentran en posiciones diferentes.
Salida
Para cada tablero, escribe su número empezando en 1, seguido de todas las posiciones a las que se puede mover el rey negro, en orden alfabético. Si no hay ningún movimiento posible, escribe “jaque mate” o “ahogado” según sea el caso.
Puntuación
Resolver juegos de pruebas como el ejemplo 1, donde el jugador blanco sólo tiene torres.
Resolver juegos de pruebas como el ejemplo 2, donde el jugador blanco sólo tiene alfiles.
Resolver juegos de pruebas como el ejemplo 3, donde el jugador blanco sólo tiene damas.
Resolver juegos de pruebas como el ejemplo 4, donde el jugador blanco tiene piezas de los tres tipos.
Input
7 e8 0 a4 1 Tb8 h3 2 Th1 Tg5 h3 2 Th1 Tg4 a1 2 Tb8 Th2 c4 4 Tb4 Tc3 Tc5 Td4 f6 4 Tg7 Ta7 Te2 Th5
Output
1: d7 d8 e7 f7 f8 2: a3 a5 3: jaque mate 4: g4 5: ahogado 6: jaque mate 7: ahogado
Input
6 a4 1 Af8 h3 4 Af1 Ag3 Ae6 Ab8 h3 3 Af1 Ag3 Ae6 a1 3 Ag8 Ag6 Aa3 c4 4 Aa5 Af1 Af2 Af7 f6 4 Ad6 Ae6 Af5 Ah6
Output
1: a5 b3 b5 2: jaque mate 3: g3 4: ahogado 5: jaque mate 6: ahogado
Input
6 a4 1 Db6 h3 2 Dg1 Dg4 h3 2 Dh1 Dg4 a1 1 Dc2 c4 2 Db3 Dd5 f6 2 De8 Dg4
Output
1: a3 2: jaque mate 3: g4 4: ahogado 5: jaque mate 6: ahogado
Input
16 e5 2 Ad6 Tf6 e5 2 Ad4 Tf6 e5 2 Df2 Tf6 e5 2 De4 Tf6 e5 2 Df4 Af6 e5 2 Df3 Af5 e5 3 Dg4 Tf5 Ab4 e5 2 Af5 Tg5 h8 2 Tg1 Ag8 h8 2 Tg7 Aa1 e2 3 Aa8 Dc1 Tf3 a2 3 Ab2 Ac2 Tb8 a1 3 Ta8 Dh8 Ah7 d5 3 Tc6 Df4 Af3 d5 7 Ac5 Ad6 Ad4 Ae5 Df1 Ag2 Tf6 h1 4 Af2 Ag1 Ag2 Th2
Output
1: d4 d5 e4 f6 2: d4 d5 e4 3: d5 e4 4: e4 f6 5: d5 e6 f4 6: d4 d6 f6 7: e6 8: d4 d5 d6 f4 f6 9: ahogado 10: ahogado 11: ahogado 12: ahogado 13: jaque mate 14: jaque mate 15: jaque mate 16: jaque mate