introduzione
Una famiglia di foche è bloccata su un iceberg nel circolo polare artico. C'è un trasmettitore radio situato sull'iceberg che i sigilli possono usare per chiamare aiuto. Tuttavia, solo il sigillo papà sa come far funzionare il trasmettitore radio. E peggio ancora, il ghiaccio è molto scivoloso in questo periodo dell'anno, quindi le foche scivolano in modo incontrollato fino a quando non colpiscono un altro sigillo o scivolano dal bordo dell'iceberg, rendendo molto difficile per il sigillo papà raggiungere il trasmettitore radio. Fortunatamente, uno dei sigilli è uno scienziato informatico, quindi decide di scrivere un programma per capire come manovrare il sigillo di papà sul trasmettitore radio. Poiché non c'è molto spazio sul ghiaccio per scrivere un programma, decide di fare in modo che il programma utilizzi il minor numero di byte possibile.
Descrizione dell'input
Il programma del sigillo riceverà input da STDIN, argomenti della riga di comando o funzioni di input dell'utente (come raw_input()). Non può essere preinizializzato in una variabile (es. "Questo programma prevede l'input in una variabile x").
La prima riga dell'input è composta da due numeri interi separati da virgola nel modulo
A,B
Di seguito sono riportate Brighe composte da Acaratteri ciascuna. Ogni riga può contenere solo caratteri tra i seguenti:
.: Il freddo, il freddo, l'oceano. La mappa avrà sempre questo come bordo.#: Una parte dell'iceberg.a...z: Un sigillo che non è il sigillo di papà sull'iceberg.D: Il sigillo di papà sull'iceberg.*: Il trasmettitore radio.
(Nota che il sigillo di papà è sempre annotato con una maiuscola D. Un minuscolo dè semplicemente un sigillo normale.)
Descrizione dell'uscita
In base alle seguenti regole relative al modo in cui i sigilli possono muoversi, emettere un elenco di istruzioni per i sigilli su come dovrebbero spostarsi per ottenere il sigillo del papà sul trasmettitore radio.
- Regola: tutti i sigilli possono spostarsi verso l'alto (
U), il basso (D), la sinistra (L) e la destra (R). Non possono scorrere in diagonale. - Regola: quando si sposta, un sigillo continuerà a muoversi nella stessa direzione fino a quando non si scontra con un altro sigillo o cade in mare.
- Se un sigillo si scontra con un altro sigillo, smetterà di muoversi. Il sigillo con cui è entrato in collisione non si muoverà.
- Se un sigillo cade nel mare, annegherà e scomparirà dalla mappa. Cioè, non funge da collider per altri sigilli e non può essere spostato di nuovo.
- Regola: due sigilli non possono muoversi contemporaneamente, né un sigillo può essere spostato mentre un altro è ancora in movimento. Il sigillo successivo può essere spostato solo dopo che il sigillo precedente ha smesso di muoversi.
- Regola: non ci sono restrizioni per quanto riguarda lo spostamento di un sigillo più volte o il numero di sigilli che affogano.
- Regola: una soluzione corretta avrà l' estremità del sigillo papà sul trasmettitore radio. Il sigillo papà non può semplicemente passare il trasmettitore mentre scorre.
L'output sarà composto da più righe, ognuna nel modulo
A,B
Dov'è Ail sigillo da spostare ( Dper il sigillo di papà, a...z per gli altri), ed Bè la direzione per spostare la guarnizione (o U, D, L, o R). Nota che non è necessario trovare il percorso più breve. Qualsiasi percorso che porti il sigillo del papà all'obiettivo è un risultato accettabile.
Esempi di ingressi e uscite
Ingresso:
25,5
.........................
.#######################.
.####D#############*k###.
.#######################.
.........................
Produzione:
D,R
Ingresso:
9,7
.........
.a#####b.
.#####d#.
.##l*###.
.###m#p#.
.#D#.#c#.
.........
Uscita (un'uscita possibile su molte):
m,R
b,L
D,U
D,R
D,D
D,L
Ingresso:
26,5
..........................
.###..................###.
.l*##########v#########D#.
.###..................###.
..........................
Uscita (un'uscita possibile su molte):
v,D
D,L
Se hai altre domande, chiedi nei commenti.