Guest User

Untitled

a guest
Nov 19th, 2017
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.12 KB | None | 0 0
  1. # frozen_string_literal: true
  2.  
  3. require "pp"
  4. require "pry"
  5.  
  6. family = {
  7. madigan: %i[jonathan maggie],
  8. jonathan: %i[marshall betty],
  9. maggie: %i[nancy red],
  10. belle: %i[madigan ethan],
  11. milo: %i[madigan ethan],
  12. clara: %i[madigan ethan],
  13. nick_f: %i[jonathan maggie],
  14. marshall: %i[],
  15. betty: %i[],
  16. tracy: %i[marshall betty],
  17. ethan: %i[judy steve],
  18. judy: %i[],
  19. steve: %i[],
  20. nancy: %i[],
  21. kathy: %i[nancy red],
  22. pat: %i[nancy red],
  23. red: %i[],
  24. nick_r: %i[],
  25. pz: %i[nick_r pz_mom],
  26. pz_mom: %i[],
  27. jules: %i[nick_r tracy],
  28. cyrus: %i[nick_r tracy],
  29. isabelle: %i[],
  30. viva: %i[jonathan isabelle],
  31. lincoln: %i[jonathan isabelle],
  32. }
  33.  
  34. def bfs(adjacency_list, starting_edge)
  35. level = {}
  36. # children = {}
  37. i = 1
  38. frontier = [starting_edge]
  39. until frontier.empty?
  40. next_frontier = []
  41. frontier.each do |next_edge|
  42. adjacency_list[next_edge].each do |further_edge|
  43. level[further_edge] = i
  44. # children[further_edge] = next_edge
  45. next_frontier << further_edge
  46. end
  47. end
  48. frontier = next_frontier
  49. i += 1
  50. end
  51. level
  52. end
  53.  
  54. pp family.map { |(k, _v)| [k, bfs(family, k)] }.to_h
Add Comment
Please, Sign In to add comment