Un tuo amico ti ha dato le indicazioni per il miglior ristorante in città. È una serie di curve a sinistra e a destra. Sfortunatamente, hanno dimenticato di menzionare per quanto tempo devi andare dritto tra quei turni. Fortunatamente hai una mappa stradale con tutti i ristoranti. Forse puoi capire quale ristorante intendessero?
Ingresso
La mappa è data come una griglia rettangolare di caratteri ASCII. .è una strada, #è un edificio, Aper Zsono i vari ristoranti. Inizi nell'angolo in alto a sinistra, andando verso est. Esempio:
.....A
.#.###
B....C
##.#.#
D....E
##F###
Le istruzioni del tuo amico verranno fornite come una stringa (potenzialmente vuota) o un elenco di caratteri che contengono se Le R.
Produzione
Puoi percorrere qualsiasi percorso che corrisponda alle svolte a destra e sinistra nella stringa di input, a condizione che tu faccia almeno un passo avanti prima di ciascuno di essi, così come alla fine. In particolare questo significa che se la stringa inizia con Rte non puoi andare immediatamente a sud nella colonna più a sinistra. Significa anche che non è possibile ruotare di 180 ° sul posto.
Non puoi camminare attraverso edifici o ristoranti tranne quello che raggiungi alla fine. Si può presumere che l'angolo in alto a sinistra sia a ..
Dovresti produrre tutti i ristoranti che puoi raggiungere con le istruzioni del tuo amico, come una stringa o un elenco.
Puoi presumere che le istruzioni porteranno ad almeno un ristorante. Ad esempio, un singolo non Lsarebbe valido per la mappa sopra.
Alcuni esempi per la mappa sopra:
<empty> A
R F
RR B,D
RL C,E
RLRL E
RLLR C
RLLL B
RLRR D
RLRRRR A,C
RLLLRLL B
Nota in particolare che Rnon raggiunge B.
È possibile scrivere un programma o una funzione, prendendo l'input tramite STDIN (o l'alternativa più vicina), l'argomento della riga di comando o l'argomento della funzione e producendo il risultato tramite STDOUT (o l'alternativa più vicina), il valore di ritorno della funzione o il parametro della funzione (out).
Si applicano le regole standard del code-golf .
Casi di prova aggiuntivi
Ecco una mappa più grande, per gentile concessione di Conor O'Brien (che ho modificato un po '):
.......Y..........................######
.####.....#.##....##..######....#.###.##
B.........#.##.#..##....##...##.#.#P...#
.#.#####..#.##..#.##....##.#....#.####.#
.#.#...C..#.##...G##..#.##.#....#.#....#
.#.#.#.#..#.####.###.#..##.#....#.#.NO.#
.#.#A#.#..#.##...F###...##.#.##.#......#
.#.###....#.##....##....##.#....###....#
.#.....##...##....##...D##........###R.#
.#.##..##...##E...##..######....####...#
.....X....#.#.....................##S.T#
###########.###########M############...#
#................................###.#.#
#.#########.########.######.#.######.#.#
#......V#.....######.IJ...........##.#.#
#########.###......ZH############L##.#.#
#########.##########.###############.#.#
####K##...##########.#....#..........#.#
####....########U......##...#######Q.#.#
#####################################W.#
Ed ecco alcuni elenchi selezionati di indicazioni stradali e i loro risultati previsti:
<empty> Y
RR B
RLL Y
RLRR B,C,X
RLLLRRR G
RLRLRLRL I,Z
RLLRRRLRRLRR C,D,F,G,Y
RLRRLLRLLLRL B,C,Y
RLLRRLRRRLLLL F,M,N,O,Y
RLRRLLLRRRRLLLL F,M,Y
RLRRLRRRRRRRRRR E,F,Y
RLRRRLLLRLLRRLL M,N,O
RLLRRLRRLRLRLRRLLR E,U
RLRLLRLRRLRRRRRLRL F,G,I,Z
RLLRRLLRLLRRRLRRLLRR W
RLLLRRRLRRLLLLLRLLLLLL D,G,X
RLRLLRLRRLRLRRRLRLLLRR B,C,E,J,X
RLRLRLLLLRLRRRRRRLRLRRLR Y
RLRLRRRLRLLLLRLRRLLLLRLLRRL E,M,X
RLRLLLRRRLLLRLLRLLRLRRLRLRR B,E,F,K
RLRRRLLLLLLLLLLLLLLLRRRRLLL A,B
Domanda bonus: c'è un input che risulta solo I o solo U ? In tal caso, qual è il percorso più breve?