I had a spare fifteen minutes and decided that I should tidy up my monorepo. The work of tidying up is not finished; this is a small step in the right direction. TL;DR - Created a tools directory - Created a scratch directory (see README.md for more information) - Added README.md to third_party - Renamed delete_dotfile_symlinks -> symlinkManager - Packaged symlinkManager as an executable symlink-mgr using buildGo
		
			
				
	
	
		
			26 lines
		
	
	
	
		
			711 B
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			26 lines
		
	
	
	
		
			711 B
		
	
	
	
		
			Python
		
	
	
	
	
	
| # Doing a practice implementation of Dijkstra's algorithm: a priority-first
 | |
| # search.
 | |
| from heapq import heappush, heappop
 | |
| 
 | |
| 
 | |
| class Node(object):
 | |
|     def __init__(self, value, children):
 | |
|         self.value = value
 | |
|         self.children = children
 | |
| 
 | |
| 
 | |
| def shortest_path(a, b):
 | |
|     """Return the shortest path from `a` to `b`."""
 | |
|     q = []
 | |
|     seen = set()
 | |
|     heappush((a.value, a, [a]), q)
 | |
| 
 | |
|     while q:
 | |
|         d, node, path = heappop(q)
 | |
|         if node == b:
 | |
|             return path
 | |
|         seen.add(node)
 | |
|         for child in node.children:
 | |
|             if child not in seen:
 | |
|                 heappush((d + child.value, child, path + [child]), q)
 | |
|     raise Exception("Path between nodes A and B does not exist.")
 |