Ruby/Bsearch は配列を 2分探索する Ruby用のライブラリです。ブ ロックで与えた条件にマッチする、最初の要素および最後の要素を 見つけます。
最新版は <URL:http://namazu.org/~satoru/ruby-bsearch/> から入手可能です
% irb -r ./bsearch.rb
>> %w(a b c c c d e f).bsearch_first {|x| x <=> "c"}
=> 2
>> %w(a b c c c d e f).bsearch_last {|x| x <=> "c"}
=> 5
>> %w(a b c e f).bsearch_first {|x| x <=> "c"}
=> 2
>> %w(a b e f).bsearch_first {|x| x <=> "c"}
=> nil
>> %w(a b e f).bsearch_last {|x| x <=> "c"}
=> nil
>> %w(a b e f).bsearch_lower_boundary {|x| x <=> "c"}
=> 2
>> %w(a b e f).bsearch_upper_boundary {|x| x <=> "c"}
=> 2
>> %w(a b c c c d e f).bsearch_range {|x| x <=> "c"}
=> 2...5
>> %w(a b c d e f).bsearch_range {|x| x <=> "c"}
=> 2...3
>> %w(a b d e f).bsearch_range {|x| x <=> "c"}
=> 2...2
Array#bsearch_first (ange = 0 ... self.length) {|x| ...}Array#bsearch_last (range = 0 ... self.length) {|x| ...}Array#bsearch_lower_boundary (range = 0 ... self.length) {|x| ...}Array#bsearch_upper_boundary (range = 0 ... self.length) {|x| ...}Array#bsearch_range (range = 0 ... self.length) {|x| ...}Array#bsearch (range = 0 ... self.length) {|x| ...}Ruby のライセンスに従ったフリーソフトウェアとして公開します。 完全に無保証です。
satoru@namazu.org