From 2821daa4e1c66fb61d204c8cc5fe37673db381f2 Mon Sep 17 00:00:00 2001 From: akmatkulov Date: Thu, 2 Nov 2023 21:27:36 +0600 Subject: [PATCH 1/5] Finish exercise arrays --- test/exercise/arrays/solution.rb | 27 +++++++++++++++++++++++++-- test/exercise/arrays/test.rb | 2 -- 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/test/exercise/arrays/solution.rb b/test/exercise/arrays/solution.rb index a7d518fc..3140ce15 100644 --- a/test/exercise/arrays/solution.rb +++ b/test/exercise/arrays/solution.rb @@ -2,11 +2,34 @@ module Exercise module Arrays class << self def replace(array) + max = 0 + item = 0 + array.size.times { |n| max = array[n] if max < array[n] } + while array.size > item + if (array[item]).positive? + array[item] = max + else + array[item] + end + item += 1 + end array end - def search(_array, _query) - 0 + def search(array, query) + return -1 if array.size.zero? || query < array.first || query > array.last + + mid_index = array.length / 2 + + case query <=> array[mid_index] + when -1 + search(array.take(mid_index), query) + when 0 + mid_index + when 1 + subs = search(array.drop(mid_index + 1), query) + subs.nil? ? nil : (mid_index + 1) + subs + 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 4b342ff71536906b45bd7ff7c1c86235fb67b1e6 Mon Sep 17 00:00:00 2001 From: akmatkulov Date: Sat, 4 Nov 2023 15:39:40 +0600 Subject: [PATCH 2/5] Fixed exercise arrays --- test/exercise/arrays/solution.rb | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/test/exercise/arrays/solution.rb b/test/exercise/arrays/solution.rb index 3140ce15..137d38b9 100644 --- a/test/exercise/arrays/solution.rb +++ b/test/exercise/arrays/solution.rb @@ -1,19 +1,22 @@ module Exercise module Arrays class << self - def replace(array) + def max_value(array) max = 0 - item = 0 - array.size.times { |n| max = array[n] if max < array[n] } - while array.size > item - if (array[item]).positive? - array[item] = max + array.each do |item| + max = item if item > max && item.positive? + end + max + end + + def replace(array) + array.map do |item| + if item.positive? + max_value(array) else - array[item] + item end - item += 1 end - array end def search(array, query) @@ -27,8 +30,8 @@ def search(array, query) when 0 mid_index when 1 - subs = search(array.drop(mid_index + 1), query) - subs.nil? ? nil : (mid_index + 1) + subs + min_index = search(array.drop(mid_index + 1), query) + min_index.nil? ? nil : (mid_index + 1) + min_index end end end From 178cc1c6f1a6c504654dc3843ea45c38376b237e Mon Sep 17 00:00:00 2001 From: akmatkulov Date: Tue, 7 Nov 2023 12:41:30 +0600 Subject: [PATCH 3/5] Fixed solution --- test/exercise/arrays/solution.rb | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/test/exercise/arrays/solution.rb b/test/exercise/arrays/solution.rb index 137d38b9..7914fba6 100644 --- a/test/exercise/arrays/solution.rb +++ b/test/exercise/arrays/solution.rb @@ -11,11 +11,7 @@ def max_value(array) def replace(array) array.map do |item| - if item.positive? - max_value(array) - else - item - end + item.positive? ? max_value(array) : item end end From 1f30193951c18f62aad6466feb696e2fa7297d2d Mon Sep 17 00:00:00 2001 From: akmatkulov Date: Tue, 7 Nov 2023 13:09:28 +0600 Subject: [PATCH 4/5] Delete <=> of solution.rb --- test/exercise/arrays/solution.rb | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/test/exercise/arrays/solution.rb b/test/exercise/arrays/solution.rb index 7914fba6..34e46789 100644 --- a/test/exercise/arrays/solution.rb +++ b/test/exercise/arrays/solution.rb @@ -20,14 +20,13 @@ def search(array, query) mid_index = array.length / 2 - case query <=> array[mid_index] - when -1 + if query < array[mid_index] search(array.take(mid_index), query) - when 0 - mid_index - when 1 + elsif query > array[mid_index] min_index = search(array.drop(mid_index + 1), query) min_index.nil? ? nil : (mid_index + 1) + min_index + else + mid_index end end end From f3716c274f697a54ae722be33df99cac67607733 Mon Sep 17 00:00:00 2001 From: akmatkulov Date: Wed, 8 Nov 2023 12:31:19 +0600 Subject: [PATCH 5/5] Fixed 3 solution.rb --- test/exercise/arrays/solution.rb | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/test/exercise/arrays/solution.rb b/test/exercise/arrays/solution.rb index 34e46789..6b8620b5 100644 --- a/test/exercise/arrays/solution.rb +++ b/test/exercise/arrays/solution.rb @@ -19,15 +19,10 @@ def search(array, query) return -1 if array.size.zero? || query < array.first || query > array.last mid_index = array.length / 2 + return search(array.take(mid_index), query) if query < array[mid_index] - if query < array[mid_index] - search(array.take(mid_index), query) - elsif query > array[mid_index] - min_index = search(array.drop(mid_index + 1), query) - min_index.nil? ? nil : (mid_index + 1) + min_index - else - mid_index - end + min_index = search(array.drop(mid_index + 1), query) + min_index.nil? ? nil : (mid_index + 1) + min_index end end end