From 9e39abada48651eff56c4dbe1ffa4e7bb2355120 Mon Sep 17 00:00:00 2001 From: Michael Coyne Date: Tue, 11 Aug 2015 19:45:47 -0400 Subject: [PATCH 1/2] Add binary_search_index method for using a block to find an index --- lib/binary_search/pure.rb | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/binary_search/pure.rb b/lib/binary_search/pure.rb index eb3766b..617f4d5 100644 --- a/lib/binary_search/pure.rb +++ b/lib/binary_search/pure.rb @@ -7,6 +7,10 @@ def binary_search(&block) index = binary_chop(&block) index ? self[index] : nil end + + def binary_search_index(&block) + binary_chop(&block) + end private From b0b1d80f335da815112b25c211cdac13c96a9629 Mon Sep 17 00:00:00 2001 From: Michael Coyne Date: Tue, 11 Aug 2015 21:16:25 -0400 Subject: [PATCH 2/2] Fix idx calculation --- lib/binary_search/pure.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/binary_search/pure.rb b/lib/binary_search/pure.rb index 617f4d5..6898de7 100644 --- a/lib/binary_search/pure.rb +++ b/lib/binary_search/pure.rb @@ -19,7 +19,7 @@ def binary_chop(&block) lower = 0 while(upper >= lower) do - idx = lower + (upper - lower) / 2 + idx = lower + ((upper - lower) / 2) comp = yield self[idx] if comp == 0