Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
First solution in Uncategorized category for One line Drawing by Moff
from collections import defaultdict
def draw(edges):
adjacent = defaultdict(list)
for edge in edges:
v1, v2 = edge[:2], edge[2:]
adjacent[v1].append(v2)
adjacent[v2].append(v1)
res = [v for v, adj in adjacent.items() if len(adj) % 2]
if len(res) > 2:
return []
if res:
stack = [res[0]]
else:
stack = [list(edges)[0][:2]]
visited = []
deleted = set()
while stack:
x = stack[-1]
res = [v for v in adjacent[x]
if (x, v) not in deleted and (v, x) not in deleted]
if res:
stack.append(res[0])
deleted.add((x, res[0]))
else:
x = stack.pop()
visited.append(x)
return visited
Aug. 15, 2015