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.
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 ----------