From 9671715829500c9cca4fc8d39f5555de53521eb4 Mon Sep 17 00:00:00 2001 From: Sukhanov George Date: Tue, 5 Mar 2024 22:11:16 +0000 Subject: [PATCH 1/2] task commit --- task_01/src/test.cpp | 21 +++++++++++++++++---- task_01/src/topology_sort.cpp | 20 ++++++++++++++++++++ task_01/src/topology_sort.hpp | 8 ++++++++ 3 files changed, 45 insertions(+), 4 deletions(-) diff --git a/task_01/src/test.cpp b/task_01/src/test.cpp index ef5a86ae..bef48791 100644 --- a/task_01/src/test.cpp +++ b/task_01/src/test.cpp @@ -1,8 +1,21 @@ - #include +#include + #include "topology_sort.hpp" -TEST(TopologySort, Simple) { - ASSERT_EQ(1, 1); // Stack [] -} +TEST(MySearch, Simple) { + std::vector list = {2, 4, 7, 9, 12, 16, 19, 23, 27}; + ASSERT_EQ(MySearch(list, 50), std::pair(23LL, 27LL)); + ASSERT_EQ(MySearch(list, 43), std::pair(16LL, 27LL)); + ASSERT_EQ(MySearch(list, 21), std::pair(2LL, 19LL)); + ASSERT_EQ(MySearch(list, 18), std::pair(2LL, 16LL)); + ASSERT_EQ(MySearch(list, 11), std::pair(2LL, 9LL)); + ASSERT_EQ(MySearch(list, 47), std::nullopt); + ASSERT_EQ(MySearch(list, 24), std::nullopt); + ASSERT_EQ(MySearch(list, 2), std::nullopt); + ASSERT_EQ(MySearch(list, 1), std::nullopt); + ASSERT_EQ(MySearch(list, -1421532541), std::nullopt); + list = {}; + ASSERT_EQ(MySearch(list, 10), std::nullopt); +} \ No newline at end of file diff --git a/task_01/src/topology_sort.cpp b/task_01/src/topology_sort.cpp index e53f670c..31521624 100644 --- a/task_01/src/topology_sort.cpp +++ b/task_01/src/topology_sort.cpp @@ -1 +1,21 @@ #include "topology_sort.hpp" + +#include +#include + +std::optional> MySearch(std::vector list, LL n) { + if (list.empty()) return std::nullopt; + if (!std::is_sorted(list.cbegin(), list.cend())) return std::nullopt; + LL left = 0; + LL right = list.size() - 1; + while (left != right) { + LL sum = list[left] + list[right]; + if (sum == n) + return std::pair{list[left], list[right]}; + else if (sum < n) + left++; + else if (sum > n) + right--; + } + return std::nullopt; +} \ No newline at end of file diff --git a/task_01/src/topology_sort.hpp b/task_01/src/topology_sort.hpp index 6f70f09b..41b128a9 100644 --- a/task_01/src/topology_sort.hpp +++ b/task_01/src/topology_sort.hpp @@ -1 +1,9 @@ #pragma once + +#include +#include +#include + +typedef long long LL; + +std::optional> MySearch(std::vector list, LL n); \ No newline at end of file From 8027c692e32d6b5175c350f3b06e75c592adf578 Mon Sep 17 00:00:00 2001 From: Sukhanov George Date: Sun, 16 Jun 2024 22:58:26 +0000 Subject: [PATCH 2/2] fix --- .../{topology_sort.cpp => search_task.cpp} | 4 +-- .../{topology_sort.hpp => search_task.hpp} | 2 +- task_01/src/test.cpp | 32 +++++++++++-------- 3 files changed, 22 insertions(+), 16 deletions(-) rename task_01/src/{topology_sort.cpp => search_task.cpp} (81%) rename task_01/src/{topology_sort.hpp => search_task.hpp} (56%) diff --git a/task_01/src/topology_sort.cpp b/task_01/src/search_task.cpp similarity index 81% rename from task_01/src/topology_sort.cpp rename to task_01/src/search_task.cpp index 31521624..b106d6a9 100644 --- a/task_01/src/topology_sort.cpp +++ b/task_01/src/search_task.cpp @@ -1,9 +1,9 @@ -#include "topology_sort.hpp" +#include "search_task.hpp" #include #include -std::optional> MySearch(std::vector list, LL n) { +std::optional> SearchInList(std::vector list, LL n) { if (list.empty()) return std::nullopt; if (!std::is_sorted(list.cbegin(), list.cend())) return std::nullopt; LL left = 0; diff --git a/task_01/src/topology_sort.hpp b/task_01/src/search_task.hpp similarity index 56% rename from task_01/src/topology_sort.hpp rename to task_01/src/search_task.hpp index 41b128a9..96db6d98 100644 --- a/task_01/src/topology_sort.hpp +++ b/task_01/src/search_task.hpp @@ -6,4 +6,4 @@ typedef long long LL; -std::optional> MySearch(std::vector list, LL n); \ No newline at end of file +std::optional> SearchInList(std::vector list, LL n); \ No newline at end of file diff --git a/task_01/src/test.cpp b/task_01/src/test.cpp index bef48791..330c46f2 100644 --- a/task_01/src/test.cpp +++ b/task_01/src/test.cpp @@ -2,20 +2,26 @@ #include -#include "topology_sort.hpp" +#include "search_task.hpp" -TEST(MySearch, Simple) { +TEST(SearchInList, Simple) { std::vector list = {2, 4, 7, 9, 12, 16, 19, 23, 27}; - ASSERT_EQ(MySearch(list, 50), std::pair(23LL, 27LL)); - ASSERT_EQ(MySearch(list, 43), std::pair(16LL, 27LL)); - ASSERT_EQ(MySearch(list, 21), std::pair(2LL, 19LL)); - ASSERT_EQ(MySearch(list, 18), std::pair(2LL, 16LL)); - ASSERT_EQ(MySearch(list, 11), std::pair(2LL, 9LL)); - ASSERT_EQ(MySearch(list, 47), std::nullopt); - ASSERT_EQ(MySearch(list, 24), std::nullopt); - ASSERT_EQ(MySearch(list, 2), std::nullopt); - ASSERT_EQ(MySearch(list, 1), std::nullopt); - ASSERT_EQ(MySearch(list, -1421532541), std::nullopt); + ASSERT_EQ(SearchInList(list, 50), std::pair(23LL, 27LL)); + ASSERT_EQ(SearchInList(list, 43), std::pair(16LL, 27LL)); + ASSERT_EQ(SearchInList(list, 21), std::pair(2LL, 19LL)); + ASSERT_EQ(SearchInList(list, 18), std::pair(2LL, 16LL)); + ASSERT_EQ(SearchInList(list, 11), std::pair(2LL, 9LL)); + ASSERT_EQ(SearchInList(list, 47), std::nullopt); + ASSERT_EQ(SearchInList(list, 24), std::nullopt); + ASSERT_EQ(SearchInList(list, 2), std::nullopt); + ASSERT_EQ(SearchInList(list, 1), std::nullopt); + ASSERT_EQ(SearchInList(list, -1421532541), std::nullopt); list = {}; - ASSERT_EQ(MySearch(list, 10), std::nullopt); + ASSERT_EQ(SearchInList(list, 10), std::nullopt); + list = {1}; + ASSERT_EQ(SearchInList(list, 100), std::nullopt); + list = {0}; + ASSERT_EQ(SearchInList(list, -142), std::nullopt); + list = {}; + ASSERT_EQ(SearchInList(list, 0), std::nullopt); } \ No newline at end of file