Sha256: c77bc0223cc019cd312b732d8221764ecff9d4c16460916bbf95a18b2940b6de

Contents?: true

Size: 570 Bytes

Versions: 396

Compression:

Stored size: 570 Bytes

Contents

class BinarySearch
  attr_reader :list

  def initialize(data)
    fail ArgumentError unless data.sort == data
    @list = data
  end

  def search_for(datum)
    return middle if list[middle] == datum

    if list[middle] > datum
      sublist = list[0..middle]
      fail 'Not Found' if sublist == list
      return BinarySearch.new(sublist).search_for(datum)
    else
      sublist = list[middle..-1]
      fail 'Not Found' if sublist == list
      return BinarySearch.new(sublist).search_for(datum) + middle
    end
  end

  def middle
    list.length / 2
  end
end

Version data entries

396 entries across 396 versions & 1 rubygems

Version Path
trackler-2.2.1.180 tracks/ruby/exercises/binary-search/.meta/solutions/binary_search.rb
trackler-2.2.1.179 tracks/ruby/exercises/binary-search/.meta/solutions/binary_search.rb
trackler-2.2.1.178 tracks/ruby/exercises/binary-search/.meta/solutions/binary_search.rb
trackler-2.2.1.177 tracks/ruby/exercises/binary-search/.meta/solutions/binary_search.rb
trackler-2.2.1.176 tracks/ruby/exercises/binary-search/.meta/solutions/binary_search.rb
trackler-2.2.1.175 tracks/ruby/exercises/binary-search/.meta/solutions/binary_search.rb
trackler-2.2.1.174 tracks/ruby/exercises/binary-search/.meta/solutions/binary_search.rb
trackler-2.2.1.173 tracks/ruby/exercises/binary-search/.meta/solutions/binary_search.rb
trackler-2.2.1.172 tracks/ruby/exercises/binary-search/.meta/solutions/binary_search.rb
trackler-2.2.1.171 tracks/ruby/exercises/binary-search/.meta/solutions/binary_search.rb
trackler-2.2.1.170 tracks/ruby/exercises/binary-search/.meta/solutions/binary_search.rb
trackler-2.2.1.169 tracks/ruby/exercises/binary-search/.meta/solutions/binary_search.rb
trackler-2.2.1.167 tracks/ruby/exercises/binary-search/.meta/solutions/binary_search.rb
trackler-2.2.1.166 tracks/ruby/exercises/binary-search/.meta/solutions/binary_search.rb
trackler-2.2.1.165 tracks/ruby/exercises/binary-search/.meta/solutions/binary_search.rb
trackler-2.2.1.164 tracks/ruby/exercises/binary-search/.meta/solutions/binary_search.rb
trackler-2.2.1.163 tracks/ruby/exercises/binary-search/.meta/solutions/binary_search.rb
trackler-2.2.1.162 tracks/ruby/exercises/binary-search/.meta/solutions/binary_search.rb
trackler-2.2.1.161 tracks/ruby/exercises/binary-search/.meta/solutions/binary_search.rb
trackler-2.2.1.160 tracks/ruby/exercises/binary-search/.meta/solutions/binary_search.rb