Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # frozen_string_literal: true
- require "pp"
- require "pry"
- family = {
- madigan: %i[jonathan maggie],
- jonathan: %i[marshall betty],
- maggie: %i[nancy red],
- belle: %i[madigan ethan],
- milo: %i[madigan ethan],
- clara: %i[madigan ethan],
- nick_f: %i[jonathan maggie],
- marshall: %i[],
- betty: %i[],
- tracy: %i[marshall betty],
- ethan: %i[judy steve],
- judy: %i[],
- steve: %i[],
- nancy: %i[],
- kathy: %i[nancy red],
- pat: %i[nancy red],
- red: %i[],
- nick_r: %i[],
- pz: %i[nick_r pz_mom],
- pz_mom: %i[],
- jules: %i[nick_r tracy],
- cyrus: %i[nick_r tracy],
- isabelle: %i[],
- viva: %i[jonathan isabelle],
- lincoln: %i[jonathan isabelle],
- }
- def bfs(adjacency_list, starting_edge)
- level = {}
- # children = {}
- i = 1
- frontier = [starting_edge]
- until frontier.empty?
- next_frontier = []
- frontier.each do |next_edge|
- adjacency_list[next_edge].each do |further_edge|
- level[further_edge] = i
- # children[further_edge] = next_edge
- next_frontier << further_edge
- end
- end
- frontier = next_frontier
- i += 1
- end
- level
- end
- pp family.map { |(k, _v)| [k, bfs(family, k)] }.to_h
Add Comment
Please, Sign In to add comment