Dada una lista de rutas, genera la ruta correcta.
Ejemplo de ruta:
/\
----+/
|
-
y|
son caminos horizontales y verticales./
y\
son 90 ° vueltas.+
se trata como a-
o como|
dependiente de la dirección actual.
Las rutas pueden ir en cualquier dirección y un personaje puede usarse en múltiples rutas.
La entrada será así:
/--\
A------+--+--#
B------/ \--:
C------------#
D------------#
A
,B
,C
YD
son aperturas de ruta#
es un muro (el camino es malo):
es el final (el camino es correcto)
Así que aquí estará la salida B
.
Puedes asumir:
:
y#
siempre se alcanzará desde la izquierda.- El personaje a la derecha del inicio de una ruta siempre será
-
. - Los caminos siempre estarán bien formados.
#
y:
siempre estará en la misma columna.- Siempre habrá solo uno
:
y 4 caminos.
Casos de prueba
A------#
B------#
C------#
D------:
=>
D
A-\ /---:
B-+-/ /-#
C-+---+-#
D-+---/
\-----#
=>
B
/-\
A-+\\---#
B-/\-\/-#
C----++-#
D----+/
\--:
=>
A
A-\
B-+\
C-++\/----#
D-+++//---:
\++-//--#
\+--//-#
\---/
=>
A
/-\
A-+-/-\
B-+-+-\--#
C-+-/ |/-#
D-\---++-#
\---+/
\--:
=>
B
Como se trata de código de golf , gana la respuesta más corta.
code-golf
ascii-art
path-finding
TuxCrafting
fuente
fuente
/
o\
?:
Se alcanzará siempre desde la izquierda o también se podría llegar desde arriba o abajo? En otras palabras, ¿podría haber caracteres distintos#
o:
en la última columna?Respuestas:
Slip , 47 bytes
Pruébalo aquí.
Yay para características indocumentadas ...
Explicación
Slip es básicamente una sintaxis de expresiones regulares bidimensionales y, por defecto, los programas Slip imprimen el subconjunto de la entrada que coinciden. En este caso, simplemente estoy haciendo coincidir una ruta válida. Para evitar imprimir toda la ruta, estoy usando los
(?,...)
grupos no documentados que simplemente indican que los caracteres coincidentes en el interior deben omitirse de la salida.En cuanto a la expresión regular, desafortunadamente, hay cierta duplicación porque
\
y/
debe tratarse de manera diferente dependiendo de si nos estamos moviendo horizontal o verticalmente. En el lado positivo, dado que sabemos que el camino comienza y termina horizontalmente, sabemos que hay un número par\
o/
en cada camino, por lo que podemos hacer coincidir dos de ellos a la vez.fuente
:)
Python, 221 bytes
La primera sangría es solo un espacio, en el bucle while es una pestaña.
fuente
Javascript (ES6),
117104bytesCasos de prueba:
fuente
Ruby, 140 bytes
Pruébelo en repl.it: https://repl.it/CyJv
Sin golf
fuente
Perl 211 Bytes
Sin golf:
Este es mi primer golf de Perl, así que las sugerencias son bienvenidas :)
fuente