Skip to content

Instantly share code, notes, and snippets.

@ivank2139
Created October 26, 2020 20:00
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ivank2139/ceea75f40fa0bb382cf5a5d7c023f0e5 to your computer and use it in GitHub Desktop.
Save ivank2139/ceea75f40fa0bb382cf5a5d7c023f0e5 to your computer and use it in GitHub Desktop.
func findShortestEdgeFromNode(node Node) Edge {
minimumEdge := MaxEdge
for _, edge := range Edges {
if edge.Node1.Name != node.Name || EdgeContains(UsedEdges, edge) {
continue
}
if edge.Length.LessThan(minimumEdge.Length) && !NodeContains(VisitedNodes, edge.Node2) {
log.Trace.Println("\nReplaced minimumEdge with shorter edge " + edge.String())
minimumEdge = edge
}
}
if len(VisitedNodes) == 26 {
log.Info.Println("\n\tLast node " + node.Name + ", back to origin node " + OriginNode.Name)
return Edges[node.Name+" - "+OriginNode.Name]
}
log.Trace.Println("\n\tShortest edge from " + node.Name + " that has not been used " + minimumEdge.String())
rcpEdge := Edges[minimumEdge.Node2.Name+" - "+minimumEdge.Node1.Name]
UsedEdges = append(UsedEdges, minimumEdge)
UsedEdges = append(UsedEdges, rcpEdge)
return minimumEdge
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment