Robot explorador P89415


Statement
 

pdf   zip

html

Simuleu el moviment d’un robot en un laberint rectangular n × m. A cada pas, el robot pot girar 90 graus cap a la dreta (en el mateix sentit dels rellotges), 90 graus cap a l’esquerra, o bé intentar avançar. Si, intentant avançar, el robot xocaria amb un obstacle, no es mou del lloc on es troba. I si, intentant avançar, el robot surt per un marge, reapareix a l’altra extrem (com si el rectangle fos un tor). Inicialment, el robot mira cap al nord (amunt).

Entrada

L’entrada consisteix en diversos casos. Cada cas comença amb n i m, seguides d’n línies amb m caràcters cadascuna. Les ‘X’ indiquen obstacles, els punts posicions lliures, i la ‘R’ la posició inicial del robot (n’hi ha exactament una). Segueix una seqüència d’ordres acabada en ‘P’. Cada ordre pot ser ‘D’ (girar a la dreta), ‘E’ (girar a l’esquerra), o bé ‘A’ (intentar avançar). Suposeu que n i m estan entre 2 i 100.

Sortida

Per a cada cas, i després de cada ordre rebuda, escriviu la posició (columna, fila) i l’orientació del robot. La posició de dalt a l’esquerra és la (0, 0). Les orientacions poden ser ‘N’, ‘E’, ‘S’ o bé ‘O’ (nord, est, sud, o oest). Escriviu una línia amb 10 guions al final de cada cas.

Pista

Us recomenem treballar amb mòduls, però vigilant amb els nombres negatius.

Public test cases
  • Input

    4 6
    ......
    ..X...
    ....X.
    .XR...
    A
    A
    D
    A
    A
    D
    A
    A
    A
    P
    
    2 2
    R.
    ..
    A
    E
    A
    E
    A
    E
    A
    P
    

    Output

    (2, 2) N
    (2, 2) N
    (2, 2) E
    (3, 2) E
    (3, 2) E
    (3, 2) S
    (3, 3) S
    (3, 0) S
    (3, 1) S
    ----------
    (0, 1) N
    (0, 1) O
    (1, 1) O
    (1, 1) S
    (1, 0) S
    (1, 0) E
    (0, 0) E
    ----------
    
  • Information
    Author
    Salvador Roura
    Language
    Catalan
    Official solutions
    C++
    User solutions
    C++