From 1be8c76215c6b3c9044eea14b35323b5a3cd1a4b Mon Sep 17 00:00:00 2001 From: martinushka Date: Fri, 1 Sep 2023 13:01:28 +0300 Subject: [PATCH 1/3] arrays --- test/exercise/arrays/solution.rb | 17 ++++++++++++++--- test/exercise/arrays/test.rb | 2 -- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/test/exercise/arrays/solution.rb b/test/exercise/arrays/solution.rb index a7d518fc..8511801a 100644 --- a/test/exercise/arrays/solution.rb +++ b/test/exercise/arrays/solution.rb @@ -2,11 +2,22 @@ module Exercise module Arrays class << self def replace(array) - array + max_value = array[0] + array.each { |element| max_value = element if element > max_value } + array.map! { |element| element.positive? ? max_value : element } end - def search(_array, _query) - 0 + def search(array, query, left = 0, right = array.length - 1) + return -1 if left > right + + mid = (left + right) / 2 + if array[mid] == query + mid + elsif array[mid] > query + search(array, query, left, mid - 1) + else + search(array, query, mid + 1, right) + end end end end diff --git a/test/exercise/arrays/test.rb b/test/exercise/arrays/test.rb index 6876461e..da91370a 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 From fe39597be5e2cfdcbeb2491ed5079bf04fc95158 Mon Sep 17 00:00:00 2001 From: martinushka Date: Tue, 5 Sep 2023 20:12:03 +0300 Subject: [PATCH 2/3] arrays(2) --- test/exercise/arrays/solution.rb | 18 +++++++----------- test/exercise/arrays/test.rb | 2 +- 2 files changed, 8 insertions(+), 12 deletions(-) diff --git a/test/exercise/arrays/solution.rb b/test/exercise/arrays/solution.rb index 8511801a..a78a6cd5 100644 --- a/test/exercise/arrays/solution.rb +++ b/test/exercise/arrays/solution.rb @@ -1,24 +1,20 @@ module Exercise module Arrays class << self - def replace(array) + def replace!(array) max_value = array[0] array.each { |element| max_value = element if element > max_value } - array.map! { |element| element.positive? ? max_value : element } + array.map { |element| element.positive? ? max_value : element } end def search(array, query, left = 0, right = array.length - 1) - return -1 if left > right + return -1 if left > right || query < array[left] || query > array[right] mid = (left + right) / 2 - if array[mid] == query - mid - elsif array[mid] > query - search(array, query, left, mid - 1) - else - search(array, query, mid + 1, right) - end + return mid if array[mid] == query + + array[mid] > query ? search(array, query, left, mid - 1) : search(array, query, mid + 1, right) end - end + end end end diff --git a/test/exercise/arrays/test.rb b/test/exercise/arrays/test.rb index da91370a..2697b89b 100644 --- a/test/exercise/arrays/test.rb +++ b/test/exercise/arrays/test.rb @@ -5,7 +5,7 @@ class Exercise::ArraysTest < Minitest::Test # Заменить все положительные элементы целочисленного массива на максимальное значение элементов массива. def test_replace array = [3, 2, -8, 4, 100, -6, 7, 8, -99] - new_array = Exercise::Arrays.replace(array) + new_array = Exercise::Arrays.replace!(array) assert new_array == [100, 100, -8, 100, 100, -6, 100, 100, -99] end From 3c0b933cfd65b26f0e8a858872a8c592ba68f788 Mon Sep 17 00:00:00 2001 From: martinushka Date: Wed, 6 Sep 2023 13:10:49 +0300 Subject: [PATCH 3/3] arrays(3) --- test/exercise/arrays/solution.rb | 4 ++-- test/exercise/arrays/test.rb | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/test/exercise/arrays/solution.rb b/test/exercise/arrays/solution.rb index a78a6cd5..235d0703 100644 --- a/test/exercise/arrays/solution.rb +++ b/test/exercise/arrays/solution.rb @@ -1,7 +1,7 @@ module Exercise module Arrays class << self - def replace!(array) + def replace(array) max_value = array[0] array.each { |element| max_value = element if element > max_value } array.map { |element| element.positive? ? max_value : element } @@ -15,6 +15,6 @@ def search(array, query, left = 0, right = array.length - 1) array[mid] > query ? search(array, query, left, mid - 1) : search(array, query, mid + 1, right) end - end + end end end diff --git a/test/exercise/arrays/test.rb b/test/exercise/arrays/test.rb index 2697b89b..da91370a 100644 --- a/test/exercise/arrays/test.rb +++ b/test/exercise/arrays/test.rb @@ -5,7 +5,7 @@ class Exercise::ArraysTest < Minitest::Test # Заменить все положительные элементы целочисленного массива на максимальное значение элементов массива. def test_replace array = [3, 2, -8, 4, 100, -6, 7, 8, -99] - new_array = Exercise::Arrays.replace!(array) + new_array = Exercise::Arrays.replace(array) assert new_array == [100, 100, -8, 100, 100, -6, 100, 100, -99] end