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, A
per Z
sono 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 L
e 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 R
te 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 L
sarebbe 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 R
non 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?