From 4044407e02aab5524169daa63c8567eff29da75c Mon Sep 17 00:00:00 2001 From: Kristy Hisaw Date: Wed, 8 Apr 2020 16:36:50 -0700 Subject: [PATCH 1/2] tests passing --- lib/possible_bipartition.rb | 38 +++++++++++++++++++++++++++++++++++-- 1 file changed, 36 insertions(+), 2 deletions(-) diff --git a/lib/possible_bipartition.rb b/lib/possible_bipartition.rb index 69507f1..8ba78f3 100644 --- a/lib/possible_bipartition.rb +++ b/lib/possible_bipartition.rb @@ -1,4 +1,38 @@ - def possible_bipartition(dislikes) - raise NotImplementedError, "possible_bipartition isn't implemented yet" + return true if dislikes.length < 2 + + stack = [] + visited = {} + + dislikes.each_index do |i| + if !visited[i] + stack << i + visited[i] = 0 + end + + while !stack.empty? + curr_dog = stack.pop + disliked_dogs = dislikes[curr_dog] + + disliked_dogs.each do |dog| + if !visited[dog] + stack << dog + visited[dog] = number(visited[curr_dog]) + elsif visited[dog] == visited[curr_dog] + return false + end + end + end + + end + + return true end + +def number(num) + if num == 0 + return 1 + else + return 0 + end +end \ No newline at end of file From 49e1fc4ecc742b5a488c127f34ff5ed1bb7988d2 Mon Sep 17 00:00:00 2001 From: Kristy Hisaw Date: Thu, 9 Apr 2020 07:54:27 -0700 Subject: [PATCH 2/2] renamed for better clarity --- lib/possible_bipartition.rb | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/possible_bipartition.rb b/lib/possible_bipartition.rb index 8ba78f3..3c3a910 100644 --- a/lib/possible_bipartition.rb +++ b/lib/possible_bipartition.rb @@ -11,14 +11,14 @@ def possible_bipartition(dislikes) end while !stack.empty? - curr_dog = stack.pop - disliked_dogs = dislikes[curr_dog] + current = stack.pop + no_go = dislikes[current] - disliked_dogs.each do |dog| + no_go.each do |dog| if !visited[dog] stack << dog - visited[dog] = number(visited[curr_dog]) - elsif visited[dog] == visited[curr_dog] + visited[dog] = number(visited[current]) + elsif visited[dog] == visited[current] return false end end