From 577fb9f2e4970f9d28088fc3a8fc7d2d244a1d6f Mon Sep 17 00:00:00 2001 From: jingleville Date: Mon, 4 Dec 2023 22:23:57 +0300 Subject: [PATCH] solved arrays exercises --- test/exercise/arrays/solution.rb | 18 ++++++++++++++++-- test/exercise/arrays/test.rb | 4 ++-- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/test/exercise/arrays/solution.rb b/test/exercise/arrays/solution.rb index a7d518fc..7b4c6328 100644 --- a/test/exercise/arrays/solution.rb +++ b/test/exercise/arrays/solution.rb @@ -2,11 +2,25 @@ module Exercise module Arrays class << self def replace(array) - array + array.map { |el| el.positive? ? array.max : el } end def search(_array, _query) - 0 + max = _array.length - 1 + min = 0 + + while min <= max + mid = (min + max) / 2 + if _array[mid] == _query + return mid + elsif _array[mid] > _query + max = mid - 1 + else + min = mid + 1 + end + end + + -1 end end end diff --git a/test/exercise/arrays/test.rb b/test/exercise/arrays/test.rb index 6876461e..95ae5370 100644 --- a/test/exercise/arrays/test.rb +++ b/test/exercise/arrays/test.rb @@ -4,7 +4,7 @@ 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 +14,7 @@ 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