marcopolo
BAN USER# assumes sorted and unique
def get_union(a,b):
if not b:
return a
if not a:
return b
p = q = 0
union = []
while p < len(a) and q < len(b):
if a[p] < b[q]:
union.append(a[p])
p += 1
elif a[p] > b[q]:
union.append(b[q])
q += 1
else:
union.append(a[p])
p += 1
q += 1
if p < len(a):
union.extend(a[p:])
if q < len(b):
union.extend(b[q:])
return union
a = [2, 10, 14, 19, 51, 71]
b = [2, 9, 19, 40, 51]
u = get_union(a,b)
print u
u_from_stdlib = set(a) | set(b)
assert len(u) == len(set(u))
assert len(set(u) ^ u_from_stdlib) == 0, "symmetric difference exists"
def print_route(dict_of_airport_pairs, start_airport):
airport = start_airport
route = []
while airport in dict_of_airport_pairs:
old_airport = airport
airport = dict_of_airport_pairs[airport]
route.append((old_airport, airport))
return route
def find_route(airport_pairs):
dict_of_airport_pairs = dict(airport_pairs)
for airport in dict_of_airport_pairs:
if airport not in dict_of_airport_pairs.values():
return print_route(dict_of_airport_pairs, airport)
def runOnce():
print find_route((("ITO", "KOA"), ("ANC", "SEA"), ("LGA", "CDG"), ("KOA", "LGA"), ("PDX", "ITO"), ("SEA", "PDX")))
- marcopolo May 16, 2018