Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/ruby
- class User
- attr_reader :username, :name, :friends, :sex, :password
- attr_writer :username, :name, :friends, :sex, :password
- def initialize(username,name,friends,sex,password)
- @username = username
- @name = name
- @friends = friends
- @sex = sex
- @password = password
- end
- def to_out
- print("USERNAME #{@username} \nNAME #{@name} \nSEX #{@sex} \nPASSWORD #{@password} \nFRIENDS ")
- @friends.each {|key, value| print("#{key}/#{value} ") }
- print("\n")
- end
- end
- def BFS(queue, visited, counts, currentlevel)
- counts[0] = 0
- currentlevel = 1
- counter = 0
- while not queue.empty?
- curr_user = queue.shift
- friends_hash = @@database[curr_user].friends
- friends_hash.each_key do |key|
- unless visited.has_key?(key) then
- counter++
- queue << key
- visited[temp] = currentlevel
- counts[currentlevel] = counter
- end
- end
- currentlevel++
- counter = 0
- end
- return counts
- end
- @@database = {
- "bluehat" => User.new("bluehat", "Tom", {"lonelygirl13" => "dated", "nopants"=>"random"}, "Male", "aspal"),
- "lonelygirl13" => User.new("lonelygirl13", "Sara", {"redhat"=> "random", "greenhat"=>"family", "bluehat"=>"dated"}, "Female", "aspal"),
- "nopants" => User.new("nopants", "Bill", {"bluehat"=>"random", "cheeseboy"=>"group", "lonelygirl13" => "random"}, "Male", "aspal"),
- "greenhat" => User.new("greenhat", "John", { "lonelygirl13" => "family", "redhat" => "random"}, "Male", "aspal"),
- "redhat" => User.new("redhat", "David", {"lonelygirl13" => "random", "greenhat" => "random"}, "Male", "sailorboy"),
- "cheeseboy" => User.new("cheeseboy", "Justin", {"nopants" => "group"}, "Male", "wood")
- }
- que = ["bluehat"]
- counts = [0]
- visited = {"bluehat"=>0}
- result = BFS(que , visited, counts, 0)
Add Comment
Please, Sign In to add comment