Created
October 26, 2020 20:00
-
-
Save ivank2139/ceea75f40fa0bb382cf5a5d7c023f0e5 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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