diff --git a/test/exercise/arrays/solution.rb b/test/exercise/arrays/solution.rb index a7d518fc..81fccbc9 100644 --- a/test/exercise/arrays/solution.rb +++ b/test/exercise/arrays/solution.rb @@ -2,11 +2,24 @@ module Exercise module Arrays class << self def replace(array) - array + max = array[0] + for x in array do + max = x if x > max + end + array.map { |el| el.positive? ? max : el } end - def search(_array, _query) - 0 + def search(array, query) + return -1 if array.empty? || (array.last < query) + + mid = array.count / 2 + if query == array[mid] + mid + elsif query < array[mid] + search(array[0..mid - 1], query) + elsif query > array[mid] + search(array[mid + 1..-1], query) + mid + 1 + end end end end diff --git a/test/exercise/arrays/test.rb b/test/exercise/arrays/test.rb index 8cd6fb66..4e3e8acf 100644 --- a/test/exercise/arrays/test.rb +++ b/test/exercise/arrays/test.rb @@ -4,7 +4,6 @@ class Exercise::ArraysTest < Minitest::Test # Заменить все положительные элементы целочисленного массива на максимальное значение элементов массива. def test_replace - skip array = [3, 2, -8, 4, 100, -6, 7, 8, -99] new_array = Exercise::Arrays.replace(array) @@ -14,7 +13,6 @@ def test_replace # Реализовать двоичный поиск # Функция должна возвращать индекс элемента def test_bin_search - skip assert Exercise::Arrays.search([1], 900) == -1 assert Exercise::Arrays.search([1], 1).zero? assert Exercise::Arrays.search([], 900) == -1