Napisz program, który pobierze wykres (ze standardowego wejścia lub pliku, do wyboru) i znajdzie najkrótszą ścieżkę na wykresie.
Wykresy są określane przy użyciu następującego formatu:
A---S F--T
| / \ |
| / 5 0
|/ \|
D----3--E
A-Z: nodes in the graph
-|/\: edges in the graph
0-9: weights on the edges
<space>: all the holes
Wszystkie krawędzie są bezkierunkowe i leżą wzdłuż jednego z 8 głównych kierunków (tj. Bez zagięć). Krawędzie mogą opcjonalnie zawierać ciężar od 0 do 9. Ciężar nie będzie na ostatnim symbolu, który łączy krawędź z węzłem (tzn. Krawędzie muszą mieć co najmniej 3 symbole, aby zawierać ciężar). Nieważone krawędzie mają domyślną wagę 1.
Kod powinien obliczyć najkrótszą ścieżkę między węzłami S
i T
oraz wydrukować i długość ścieżki, na przykład:
5:SDEFT
Zwycięża najkrótszy prawidłowy program.
code-golf
graph-theory
path-finding
Keith Randall
źródło
źródło
AS0,SD0,SE5,DE3,FE0,FT0
(można pominąć przecinki, jeśli każdy wpis ma długość 3 bajtów)Odpowiedzi:
Oto mój kod, 494 znaków w python:
źródło