Advertisement
Guest User

Untitled

a guest
Jan 21st, 2017
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.85 KB | None | 0 0
  1. console.clear()
  2. console.log('x')
  3. var edges = [
  4. [ ], // 0
  5. [2], // 1
  6. [4,6], //2
  7. [4,5], //3
  8. [2,3,5], //4
  9. [3,4,6] //5
  10. ]
  11.  
  12. var source = Rx.Observable
  13. .of([1,5,3,6,4,2])
  14. .map(() => ({
  15. s: [3],
  16. r: [1,5,6,4,2].reverse()
  17. }))
  18. .expand(({s,r}) => {
  19. let step = []
  20. s.forEach(nodeWithMsg => {
  21. let index = r.findIndex(x => edges[nodeWithMsg].includes(x))
  22.  
  23. if(index != null) {
  24. step = [...step, ...r.splice(index, 1)]
  25. }
  26.  
  27. })
  28.  
  29. return Rx.Observable.of({
  30. s: s.concat(step),
  31. r
  32. })
  33. })
  34. .do(console.log)
  35. .filter(({r}) => r.length === 0)
  36. .take(1)
  37.  
  38. var subscription = source.subscribe(
  39. function (x) {
  40. console.log('Next: %s', x);
  41. },
  42. function (err) {
  43. console.log('Error: %s', err);
  44. },
  45. function () {
  46. console.log('Completed');
  47. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement