Mi ciudad natal, Rhyl , tiene un sistema de tráfico unidireccional que parece haber sido diseñado para mantener a las personas lejos de su destino el mayor tiempo posible. Su tarea, si elige intentarlo, es producir un programa para dar la ruta más corta a través de dicho sistema de tráfico.
Entrada
La entrada estará activada STDIN
, y será una lista de puntos de inicio y finalización seguida de una línea en blanco seguida de una lista de consultas, de la siguiente manera:
A B
B A
B C
C D
D C
A D
C A
B A
Cada camino solo se puede recorrer en la (s) dirección (es) dada (s), por lo tanto, en el ejemplo anterior, el camino A - B es una calle de doble sentido, mientras que B - C es una calle de un solo sentido de B a C. Viajar de C a B esta prohibido.
Los puntos de inicio y fin estarán representados por una sola letra mayúscula.
Salida
La salida debe ser la ruta más corta (medida por el número de puntos visitados) desde el punto de inicio dado hasta el punto final dado para cada consulta recibida. Si no existe tal ruta, muestre una línea en blanco. Si existe más de una ruta más corta, envíe la primera al ordenar todas las rutas más cortas lexicográficamente.
Para el ejemplo anterior, la salida sería:
A B C D
B A
Scripts de prueba
Como antes, proporciono pruebas para esta tarea basadas en scripts escritos por Joey y Ventero :
y también pruebas y resultados esperados para cualquiera que no pueda usar los scripts anteriores
Uso: ./test [your program and its arguments]
Recompensas
Todas las respuestas que obviamente han tenido algún intento de golf que cumplan con las especificaciones y pasen todas las pruebas obtendrán mi voto positivo. Se aceptará la respuesta de trabajo más breve antes del 26/01/2012.
fuente
output the first when sorting all shortest routes lexicographically
- Entonces, siA B D
yA C D
son soluciones válidas, ¿salida en suA B D
lugar?Respuestas:
Haskell,
223207 caracteresfuente
Python (2.x),
382369358338323318 caracteresTodos los consejos y comentarios son bienvenidos!
Debe pasar las pruebas en este formulario. Alimentación de entrada a través de stdin, por ejemplo
python shortestroute.py < test.txt
.fuente
A B I J M
lugar deA B G J M
.C:
450,437,404, 390 caracteresfuente
puts("\n")
imprime dos líneas nuevas.puts()
agrega automáticamente un terminador de fin de línea a las cadenas que imprime. Para evitar ese comportamiento, usefputs(str, stdout)
o simplementeprintf(str)
.