Ajedrez P44731


Statement
 

pdf   zip

html

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

  • Test1:  20 Puntos 

    Resolver juegos de pruebas como el ejemplo 1, donde el jugador blanco sólo tiene torres.

  • Test2:  20 Puntos 

    Resolver juegos de pruebas como el ejemplo 2, donde el jugador blanco sólo tiene alfiles.

  • Test3:  20 Puntos 

    Resolver juegos de pruebas como el ejemplo 3, donde el jugador blanco sólo tiene damas.

  • Test4:  40 Puntos 

    Resolver juegos de pruebas como el ejemplo 4, donde el jugador blanco tiene piezas de los tres tipos.

Public test cases
  • 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
    
  • Information
    Author
    Salvador Roura
    Language
    Spanish
    Other languages
    English
    Official solutions
    C++
    User solutions
    C++