Un amigo tuyo te ha dado indicaciones para llegar al mejor restaurante de la ciudad. Es una serie de giros a la izquierda y a la derecha. Desafortunadamente, se olvidaron de mencionar por cuánto tiempo necesitas avanzar entre esos turnos. Afortunadamente, tienes un mapa de calles con todos los restaurantes. ¿Quizás puedas averiguar a qué restaurante se referían?
Entrada
El mapa se proporciona como una cuadrícula rectangular de caracteres ASCII. .
es un camino, #
es un edificio, A
que Z
son los diversos restaurantes. Comienzas en la esquina superior izquierda, hacia el este. Ejemplo:
.....A
.#.###
B....C
##.#.#
D....E
##F###
Las instrucciones de su amigo se darán como una cadena (potencialmente vacía) o una lista de caracteres que contienen L
sy R
s.
Salida
Puede caminar por cualquier camino que corresponda a los giros a la izquierda y a la derecha en la cadena de entrada, siempre que avance al menos un paso antes de cada uno de ellos, así como al final. En particular, esto significa que si la cadena comienza con R
usted, no puede ir al sur inmediatamente en la columna más a la izquierda. También significa que no puede girar 180 ° en el acto.
No puede caminar a través de edificios o restaurantes, excepto el que llega al final. Puede suponer que la esquina superior izquierda es a .
.
Debe mostrar todos los restaurantes a los que se puede llegar con las instrucciones de su amigo, como una cadena o una lista.
Puede suponer que las instrucciones conducirán a al menos un restaurante. Por ejemplo, un solo L
sería inválido para el mapa anterior.
Algunos ejemplos para el mapa de arriba:
<empty> A
R F
RR B,D
RL C,E
RLRL E
RLLR C
RLLL B
RLRR D
RLRRRR A,C
RLLLRLL B
Tenga en cuenta en particular que R
no llega B
.
Puede escribir un programa o función, tomando la entrada a través de STDIN (o la alternativa más cercana), argumento de línea de comando o argumento de función y generando el resultado a través de STDOUT (o la alternativa más cercana), el valor de retorno de la función o el parámetro de función (out).
Aplican reglas estándar de código de golf .
Casos de prueba adicionales
Aquí hay un mapa más grande, cortesía de Conor O'Brien (que modifiqué un poco):
.......Y..........................######
.####.....#.##....##..######....#.###.##
B.........#.##.#..##....##...##.#.#P...#
.#.#####..#.##..#.##....##.#....#.####.#
.#.#...C..#.##...G##..#.##.#....#.#....#
.#.#.#.#..#.####.###.#..##.#....#.#.NO.#
.#.#A#.#..#.##...F###...##.#.##.#......#
.#.###....#.##....##....##.#....###....#
.#.....##...##....##...D##........###R.#
.#.##..##...##E...##..######....####...#
.....X....#.#.....................##S.T#
###########.###########M############...#
#................................###.#.#
#.#########.########.######.#.######.#.#
#......V#.....######.IJ...........##.#.#
#########.###......ZH############L##.#.#
#########.##########.###############.#.#
####K##...##########.#....#..........#.#
####....########U......##...#######Q.#.#
#####################################W.#
Y aquí hay algunas listas seleccionadas de direcciones y sus resultados esperados:
<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
Pregunta adicional: ¿hay una entrada que da como resultado solo I
o solo U
? Si es así, ¿cuál es el camino más corto?
fuente
Pitón 2,
180177168163161158 bytesParámetro
v
es el mapa como una cadena;o
es laLR
cuerdaMitch Schwartz salvó
2310lotes de bytes. ¡Gracias!Ahorré dos bytes configurando
O={0}
y devolviendo`O`[9::5]
, lo que podría no ser muy portátil:hash(0) == 0
supongo que, creo, porque eso hace que el orden de los elementosrepr(O)
seay cortar creativamente esa cuerda me da la respuesta.
fuente
C ++ 465
C ++ es tan detallado ...
Trataré de acortarlo aún más. Las sugerencias son bienvenidas.
fuente