Robot-to-Wall X94198


Statement
 

pdf   zip

Volem simular un simple joc a on un petit robot es mou en línia recta (horitzontal i verticalment) per a veure a on anirà a parar segons els moviments que demani l’usuari.

El tauler per on es mou el robot és rectangular, de nn files per mm columnes, i en cada casella del tauler pot haver-hi una paret (’#’) o bé la casella està lliure (’.’). El robot no pot entrar en les caselles a on hi ha una paret però pot passar per aquelles que estan lliures.

El robot comença en una casella donada i, en realitzar un moviment, avança en línia recta fins que una paret li barri el pas, o bé se surti del tauler. Els moviments possibles són les 4 direccions bàsiques "esquerra", "dreta", "amunt" i "avall". En els moviments a dreta o esquerra, es manté la fila i canvia la columna, i en els moviments cap amunt o cap avall, es manté la columna i canvia la fila.

Entrada

L’entrada comença amb dos enters, nn i mm, que indiquen la mida del tauler. Després venen n×mn\times m caràcters (’.’ o ’#’) que representen el tauler. Seguidament venen la posició inicial del robot, (f,c)(f, c), a on 1fn1 \leq f \leq n essent la fila, i 1cm1 \leq c \leq m la columna. Finalment ve una seqüència de paraules sense sentinella que representen les direccions dels moviments que ha de realitzar el robot.

Sortida

La sortida mostra el tauler tal com queda al final de la simulació, en el mateix format que estava a l’entrada, però amb el robot marcat amb una O majústcula, ’O’. Després de mostrar el tauler s’ha de posar una línia buida. I al final, si el robot s’ha sortit del tauler, cal afegir el text "El robot has sortit."

Observacions

Es garanteix que la posició inicial serà una casella lliure (’.’).

Public test cases
  • Input

    4 6
    .....#
    .###.#
    .#...#
    #...##
    1 1
    dreta avall esquerra avall

    Output

    .....#
    .###.#
    .#...#
    #...##
    
    El robot ha sortit.
    
  • Input

    5 8
    .#....#.
    #......#
    ..#....#
    #.......
    .#....#.
    3 4
    dreta amunt avall esquerra amunt dreta esquerra avall
    

    Output

    .#....#.
    #......#
    ..#....#
    #O......
    .#....#.
    
    
  • Input

    5 10
    .........#
    #........#
    #.......##
    ###.....##
    ####...###
    1 1
    dreta avall esquerra avall dreta avall esquerra 

    Output

    .........#
    #........#
    #.......##
    ###O....##
    ####...###
    
    
  • Information
    Author
    PRO1
    Language
    Catalan
    Other languages
    Spanish
    Official solutions
    C++
    User solutions
    C++