Caballo de ajedrez generalizado P22796


Statement
 

pdf   zip

Definamos un caballo (a,b)(a, b) como una pieza de ajedrez que se mueve saltando aa casillas en una dirección y bb casillas en la otra, donde las posibles direcciones son horizontal y vertical. Por ejemplo, el caballo de ajedrez tradicional es un caballo (1,2)(1, 2).

Dados un tablero n×mn \times m con obstáculos, una posición inicial (i1,j1)(i_1, j_1), una posición final (i2,j2)(i_2, j_2), y el par (a,b)(a, b), ¿podéis indicar si un caballo (a,b)(a, b) situado inicialmente en la casilla (i1,j1)(i_1, j_1) puede alcanzar (i2,j2)(i_2, j_2) en dos o menos pasos? El caballo no puede salir del tablero, ni pasar por ningún obstáculo.

Entrada

La entrada consiste en diversos casos, cada uno con nn y mm, seguidos del tablero (nn linias con mm caracteres cada una, donde una ‘X’ indica un obstáculo y un ‘.’ indica una casilal libre), seguidos de i1i_1, j1j_1, i2i_2, j2j_2, aa y bb. Asumid que nn y mm están entre 1 y 42, que (i1,j1)(i_1, j_1) y (i2,j2)(i_2, j_2) son casillas libres dentro del tablero, y 1a<b51 \le a < b \le 5. La casilla superior izquierda es la (0,0)(0, 0).

Salida

Para cada caso, escribid “yes” o “no” dependiendo de si la posición final es alcanzable desde la posición inicial en dos o menos pasos.

Public test cases
  • Input

    2 3
    ...
    ...
    0 0  1 2  1 2
    
    4 5
    .....
    XXXXX
    XXXXX
    .....
    0 1  3 0  1 3
    
    5 5
    .XXX.
    XXXXX
    XXXXX
    XXXXX
    XX.XX
    0 4  0 0  2 4
    
    5 5
    .XXX.
    XXXXX
    XXXXX
    XXXXX
    XXXXX
    0 4  0 0  2 4
    
    1 8
    XXXXXXX.
    0 7  0 7  3 5
    

    Output

    yes
    yes
    yes
    no
    yes
    
  • Information
    Author
    Enric Cusell
    Language
    Spanish
    Translator
    Salvador Roura
    Original language
    English
    Other languages
    English
    Official solutions
    C++
    User solutions
    C++