Skip to content

Instantly share code, notes, and snippets.

@davidchambers
Created September 18, 2012 03:33
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save davidchambers/3741090 to your computer and use it in GitHub Desktop.
Save davidchambers/3741090 to your computer and use it in GitHub Desktop.
Problem: Determine all the paths for a given node.
# Problem: Determine all the paths for a given node.
#
# A
# / \
# / \
# B C
# / \ \
# / \ \
# C D D
# \
# \
# D
A = name: 'A', parents: []
B = name: 'B', parents: [A]
C = name: 'C', parents: [A,B]
D = name: 'D', parents: [B,C]
paths = ({name, parents}, memo = [], results = []) ->
memo = [name, memo...]
if parents.length
paths parent, memo, results for parent in parents
else
results.push memo
results
# > console.log paths A
# [ [ 'A' ] ]
# > console.log paths B
# [ [ 'A', 'B' ] ]
# > console.log paths C
# [ [ 'A', 'C' ], [ 'A', 'B', 'C' ] ]
# > console.log paths D
# [ [ 'A', 'B', 'D' ], [ 'A', 'C', 'D' ], [ 'A', 'B', 'C', 'D' ] ]
@techmec
Copy link

techmec commented Sep 18, 2012

Nice!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment