-
-
Notifications
You must be signed in to change notification settings - Fork 925
Commit
- 9.4.12.0
- 9.4.11.0
- 9.4.10.0
- 9.4.9.0
- 9.4.8.0
- 9.4.7.0
- 9.4.6.0
- 9.4.5.0
- 9.4.4.0
- 9.4.3.0
- 9.4.2.0
- 9.4.1.0
- 9.4.0.0
- 9.3.15.0
- 9.3.14.0
- 9.3.13.0
- 9.3.12.0
- 9.3.11.0
- 9.3.10.0
- 9.3.9.0
- 9.3.8.0
- 9.3.7.0
- 9.3.6.0
- 9.3.5.0
- 9.3.4.0
- 9.3.3.0
- 9.3.2.0
- 9.3.1.0
- 9.3.0.0
- 9.2.21.0
- 9.2.20.1
- 9.2.20.0
- 9.2.19.0
- 9.2.18.0
- 9.2.17.0
- 9.2.16.0
- 9.2.15.0
- 9.2.14.0
- 9.2.13.0
- 9.2.12.0
- 9.2.11.1
- 9.2.11.0
- 9.2.10.0
- 9.2.9.0
- 9.2.8.0
- 9.2.7.0
- 9.2.6.0
- 9.2.5.0
- 9.2.4.1
- 9.2.4.0
- 9.2.3.0
- 9.2.2.0
- 9.2.1.0
- 9.2.0.0
- 9.1.17.0
- 9.1.16.0
- 9.1.15.0
- 9.1.14.0
- 9.1.13.0
- 9.1.12.0
- 9.1.11.0
- 9.1.10.0
- 9.1.9.0
- 9.1.8.0
- 9.1.7.0
- 9.1.6.0
- 9.1.5.0
- 9.1.4.0
- 9.1.3.0
There are no files selected for viewing
This file was deleted.
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -196,6 +196,49 @@ def bsearch | |
nil | ||
end | ||
|
||
def bsearch_index | ||
return to_enum :bsearch_index unless block_given? | ||
|
||
m = Rubinius::Mirror::Array.reflect self | ||
|
||
tuple = m.tuple | ||
|
||
min = start = m.start | ||
max = total = start + m.total | ||
|
||
last_true = nil | ||
i = start + m.total / 2 | ||
|
||
while max >= min and i >= start and i < total | ||
x = yield tuple.at(i) | ||
|
||
return i if x == 0 | ||
|
||
case x | ||
when Numeric | ||
if x > 0 | ||
min = i + 1 | ||
else | ||
max = i - 1 | ||
end | ||
when true | ||
last_true = i | ||
max = i - 1 | ||
when false, nil | ||
min = i + 1 | ||
else | ||
raise TypeError, "wrong argument type (must be numeric, true, false or nil)" | ||
end | ||
|
||
i = min + (max - min) / 2 | ||
end | ||
|
||
return i if max > min | ||
return last_true if last_true | ||
|
||
nil | ||
end | ||
This comment has been minimized.
Sorry, something went wrong.
This comment has been minimized.
Sorry, something went wrong.
bjfish
Author
Contributor
|
||
|
||
def combination(num) | ||
num = Rubinius::Type.coerce_to_collection_index num | ||
|
||
|
Can we make
bsearch
use it so the code is not duplicated?