subtree(users/wpcarro): docking briefcase at '24f5a642
'
git-subtree-dir: users/wpcarro git-subtree-mainline:464bbcb15c
git-subtree-split:24f5a642af
Change-Id: I6105b3762b79126b3488359c95978cadb3efa789
This commit is contained in:
commit
019f8fd211
766 changed files with 175420 additions and 0 deletions
40
users/wpcarro/scratch/facebook/mesh-message.py
Normal file
40
users/wpcarro/scratch/facebook/mesh-message.py
Normal file
|
@ -0,0 +1,40 @@
|
|||
from heapq import heappush, heappop
|
||||
import random
|
||||
|
||||
def shortest_path(a, b, graph):
|
||||
seen = set()
|
||||
h = []
|
||||
heappush(h, (0, a, [a]))
|
||||
while h:
|
||||
km, x, path = heappop(h)
|
||||
if x == b:
|
||||
return path
|
||||
for c in graph[x]:
|
||||
if c not in seen:
|
||||
heappush(h, (km + 1, c, path + [c]))
|
||||
raise Exception("We were unable to find a path from {} to {}".format(a, b))
|
||||
|
||||
graph = {
|
||||
'Min' : ['William', 'Jayden', 'Omar'],
|
||||
'William' : ['Min', 'Noam'],
|
||||
'Jayden' : ['Min', 'Amelia', 'Ren', 'Noam'],
|
||||
'Ren' : ['Jayden', 'Omar'],
|
||||
'Amelia' : ['Jayden', 'Adam', 'Miguel'],
|
||||
'Adam' : ['Amelia', 'Miguel', 'Sofia', 'Lucas'],
|
||||
'Miguel' : ['Amelia', 'Adam', 'Liam', 'Nathan'],
|
||||
'Noam' : ['Nathan', 'Jayden', 'William'],
|
||||
'Omar' : ['Ren', 'Min', 'Scott'],
|
||||
'Liam' : ['Ren'],
|
||||
'Nathan' : ['Noam'],
|
||||
'Scott' : [],
|
||||
}
|
||||
|
||||
result = shortest_path('Jayden', 'Adam', graph)
|
||||
print(result)
|
||||
assert result == ['Jayden', 'Amelia', 'Adam']
|
||||
print('Success!')
|
||||
|
||||
beg = random.choice(list(graph.keys()))
|
||||
end = random.choice(list(graph.keys()))
|
||||
print("Attempting to find the shortest path between {} and {}".format(beg, end))
|
||||
print(shortest_path(beg, end, graph))
|
Loading…
Add table
Add a link
Reference in a new issue