Introdução
Uma família de focas está presa em um iceberg no Círculo Polar Ártico. Há um transmissor de rádio localizado no iceberg que os selos podem usar para pedir ajuda. No entanto, apenas o selo papai sabe como operar o transmissor de rádio. E pior, o gelo é muito escorregadio nesta época do ano, de modo que as vedações deslizam incontrolavelmente até atingirem outro selo ou deslizarem para fora da borda do iceberg, dificultando muito o acesso do selo papai ao transmissor de rádio. Felizmente, um dos selos é um cientista da computação, então ela decide escrever um programa para descobrir como manobrar o selo do papai no transmissor de rádio. Como não há muito espaço no gelo para escrever um programa, ela decide fazer com que o programa use o mínimo de bytes possível.
Descrição da entrada
O programa do selo receberá entradas do STDIN, argumentos da linha de comandos ou funções de entrada do usuário (como raw_input()
). Não pode ser pré-inicializado em uma variável (por exemplo, "Este programa espera a entrada em uma variável x
").
A primeira linha da entrada consiste em dois inteiros separados por vírgula no formato
A,B
A seguir, são B
linhas compostas por A
caracteres cada. Cada linha pode conter apenas caracteres dentre os seguintes:
.
: O frio, frio, oceano. O mapa sempre terá isso como uma borda.#
: Uma parte do iceberg.a
...z
: Um selo que não é o selo do papai no iceberg.D
: O selo do papai no iceberg.*
: O transmissor de rádio.
(Observe que o selo do papai é sempre anotado com uma letra maiúscula D
. Uma minúscula d
é simplesmente um selo regular.)
Descrição da saída
De acordo com as regras a seguir sobre como os selos podem se mover, envie uma lista de instruções para os selos sobre como eles devem se mover para obter o selo do papai no transmissor de rádio.
- Regra: Todos os selos podem se mover para cima (
U
), para baixo (D
), para a esquerda (L
) e para a direita (R
). Eles não podem deslizar na diagonal. - Regra: Ao se mover, um selo continuará se movendo na mesma direção até colidir com outro selo ou cair no mar.
- Se um selo colidir com outro, ele irá parar de se mover. O selo com o qual colidiu não se moverá.
- Se um selo cair no mar, ele se afogará e desaparecerá do mapa. Ou seja, ele não atua como colisor para outros selos e não pode ser movido novamente.
- Regra: Dois selos não podem se mover ao mesmo tempo, nem um selo pode ser movido enquanto outro ainda está em movimento. O próximo selo só pode ser movido quando o selo anterior parar de se mover.
- Regra: Não há restrição quanto à movimentação de um selo várias vezes ou ao número de selos que se afogam.
- Regra: Uma solução correta fará com que o selo do papai termine no transmissor de rádio. O selo do papai não pode simplesmente passar pelo transmissor enquanto desliza.
A saída consistirá em várias linhas, cada uma na forma
A,B
Onde A
é o selo para mover ( D
para o selo pai, a
... z
para os outros), e B
é a direção para mover o selo (ou U
, D
, L
ou R
). Observe que você não precisa encontrar a rota mais curta. Qualquer rota que leve o selo do papai à meta é uma saída aceitável.
Exemplo de entradas e saídas
Entrada:
25,5
.........................
.#######################.
.####D#############*k###.
.#######################.
.........................
Resultado:
D,R
Entrada:
9,7
.........
.a#####b.
.#####d#.
.##l*###.
.###m#p#.
.#D#.#c#.
.........
Saída (uma saída possível dentre muitas):
m,R
b,L
D,U
D,R
D,D
D,L
Entrada:
26,5
..........................
.###..................###.
.l*##########v#########D#.
.###..................###.
..........................
Saída (uma saída possível dentre muitas):
v,D
D,L
Se você tiver outras perguntas, pergunte nos comentários.