From 50c6a20d11856bea92d509653d11e152555aa9b4 Mon Sep 17 00:00:00 2001 From: kp889 Date: Tue, 31 Dec 2024 08:29:23 +0100 Subject: [PATCH 1/4] sorting of deque --- homework/transform-containers/CMakeLists.txt | 2 +- homework/transform-containers/test.cpp | 2 ++ homework/transform-containers/transform.cpp | 25 ++++++++++++++++++++ homework/transform-containers/transform.hpp | 10 ++++++++ 4 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 homework/transform-containers/transform.cpp create mode 100644 homework/transform-containers/transform.hpp diff --git a/homework/transform-containers/CMakeLists.txt b/homework/transform-containers/CMakeLists.txt index 1c924a028..70898b2a3 100644 --- a/homework/transform-containers/CMakeLists.txt +++ b/homework/transform-containers/CMakeLists.txt @@ -18,7 +18,7 @@ FetchContent_MakeAvailable(googletest) project(transformContainers) enable_testing() -add_executable(${PROJECT_NAME}-ut test.cpp) # add your cpp file here after test.cpp +add_executable(${PROJECT_NAME}-ut test.cpp transform.cpp) # add your cpp file here after test.cpp # if this is problematic take a look into CMakeLists.txt files in other exercises add_compile_options(${PROJECT_NAME}-ut -Wall -Wextra -Wconversion -pedantic -Werror) diff --git a/homework/transform-containers/test.cpp b/homework/transform-containers/test.cpp index 3f6e9c0c8..210a3aca3 100644 --- a/homework/transform-containers/test.cpp +++ b/homework/transform-containers/test.cpp @@ -1,4 +1,6 @@ +#include #include "gtest/gtest.h" +#include "transform.hpp" // TODO: add proper includes diff --git a/homework/transform-containers/transform.cpp b/homework/transform-containers/transform.cpp new file mode 100644 index 000000000..641b2b8ad --- /dev/null +++ b/homework/transform-containers/transform.cpp @@ -0,0 +1,25 @@ +#include "transform.hpp" + +std::map removeDuplicateAndTranformToMap(std::list &l, std::deque &d) { + std::sort(d.begin(),d.end()); + std::sort(l.begin(),l.end()); + + auto it = std::unique(l.begin(), l.end()); + auto it2 = std::unique(d.begin(), d.end()); + std::map result; + auto dst1 = std::distance(it, l.begin()); + auto dst2 = std::distance(it2, d.begin()); + // auto it3 = d.begin(); + // auto index = -1; + // if (dst1 == dst2) { + // std::transform(l.begin(), l.end(), result.begin(), [it3, index](auto s) mutable {index ++; std::advance(it3,index); return std::pair(*it3,s); }); + + std::cout << "dupa \n"; + std::copy(l.begin(), it, std::ostream_iterator(std::cout, " ")); + std::cout << " \n dupa2 \n"; + std::copy(d.begin(), it2, std::ostream_iterator(std::cout, " ")); + std::transform(l.begin(), it, d.begin(), std::inserter(result, result.begin()), [](auto s, auto i) mutable { return std::make_pair(i, s); }); + // } + + return result; +}; diff --git a/homework/transform-containers/transform.hpp b/homework/transform-containers/transform.hpp new file mode 100644 index 000000000..bc226d83f --- /dev/null +++ b/homework/transform-containers/transform.hpp @@ -0,0 +1,10 @@ +#include +#include +#include +#include +#include +#include +#include +#include + +std::map removeDuplicateAndTranformToMap(std::list &l, std::deque &d); From d4a43c66ea986cbfd850862995fa998ee002e489 Mon Sep 17 00:00:00 2001 From: kp889 Date: Wed, 1 Jan 2025 08:26:21 +0100 Subject: [PATCH 2/4] sorting list by lexicographical compare --- homework/transform-containers/transform.cpp | 19 ++++--------------- homework/transform-containers/transform.hpp | 4 +++- 2 files changed, 7 insertions(+), 16 deletions(-) diff --git a/homework/transform-containers/transform.cpp b/homework/transform-containers/transform.cpp index 641b2b8ad..a7fe5feca 100644 --- a/homework/transform-containers/transform.cpp +++ b/homework/transform-containers/transform.cpp @@ -1,25 +1,14 @@ #include "transform.hpp" -std::map removeDuplicateAndTranformToMap(std::list &l, std::deque &d) { - std::sort(d.begin(),d.end()); - std::sort(l.begin(),l.end()); - +std::map removeDuplicateAndTranformToMap(std::list& l, std::deque& d) { + std::sort(d.begin(), d.end()); + l.sort([](auto a, auto b) { return std::lexicographical_compare(a.begin(), a.end(), b.begin(), b.end(), + [](auto c1, auto c2) { return std::tolower(c1) < std::tolower(c2); }); }); auto it = std::unique(l.begin(), l.end()); auto it2 = std::unique(d.begin(), d.end()); std::map result; auto dst1 = std::distance(it, l.begin()); auto dst2 = std::distance(it2, d.begin()); - // auto it3 = d.begin(); - // auto index = -1; - // if (dst1 == dst2) { - // std::transform(l.begin(), l.end(), result.begin(), [it3, index](auto s) mutable {index ++; std::advance(it3,index); return std::pair(*it3,s); }); - - std::cout << "dupa \n"; - std::copy(l.begin(), it, std::ostream_iterator(std::cout, " ")); - std::cout << " \n dupa2 \n"; - std::copy(d.begin(), it2, std::ostream_iterator(std::cout, " ")); std::transform(l.begin(), it, d.begin(), std::inserter(result, result.begin()), [](auto s, auto i) mutable { return std::make_pair(i, s); }); - // } - return result; }; diff --git a/homework/transform-containers/transform.hpp b/homework/transform-containers/transform.hpp index bc226d83f..fc4438cab 100644 --- a/homework/transform-containers/transform.hpp +++ b/homework/transform-containers/transform.hpp @@ -1,10 +1,12 @@ #include +#include #include #include #include #include #include #include +#include #include -std::map removeDuplicateAndTranformToMap(std::list &l, std::deque &d); +std::map removeDuplicateAndTranformToMap(std::list& l, std::deque& d); From e79690029ecdac753ed3baadec34d0941559d956 Mon Sep 17 00:00:00 2001 From: kp889 Date: Wed, 1 Jan 2025 08:31:52 +0100 Subject: [PATCH 3/4] Chromium formating aplied --- homework/transform-containers/test.cpp | 33 ++++++++------------- homework/transform-containers/transform.cpp | 29 +++++++++++------- homework/transform-containers/transform.hpp | 5 ++-- 3 files changed, 34 insertions(+), 33 deletions(-) diff --git a/homework/transform-containers/test.cpp b/homework/transform-containers/test.cpp index 210a3aca3..e4414d6c9 100644 --- a/homework/transform-containers/test.cpp +++ b/homework/transform-containers/test.cpp @@ -5,25 +5,18 @@ // TODO: add proper includes TEST(transformContainerTests, ShouldReturnUniqueMap) { - std::map expected_result{ - {1, "Ala"}, - {2, "Kot"}, - {3, "Ma"}, - {4, "Rysia"}, - {5, "Sierotka"}}; - std::list list{ - "Ala", "Kot", "Ma", "Rysia", "Ala", - "Sierotka", "Kot", "Ma", "Ala"}; - std::deque deque{ - 1, 2, 3, 4, 5, 3, 1, 2, 3, 4, - 5, 2, 3, 1, 1, 2, 3, 2, 1, 4}; - auto result = removeDuplicateAndTranformToMap(list, deque); + std::map expected_result{ + {1, "Ala"}, {2, "Kot"}, {3, "Ma"}, {4, "Rysia"}, {5, "Sierotka"}}; + std::list list{"Ala", "Kot", "Ma", "Rysia", "Ala", + "Sierotka", "Kot", "Ma", "Ala"}; + std::deque deque{1, 2, 3, 4, 5, 3, 1, 2, 3, 4, + 5, 2, 3, 1, 1, 2, 3, 2, 1, 4}; + auto result = removeDuplicateAndTranformToMap(list, deque); - ASSERT_TRUE(expected_result.size() == result.size()); - EXPECT_TRUE(std::equal(begin(result), - end(result), - begin(expected_result), - [](const auto& lhs, const auto& rhs) { - return lhs.first == rhs.first && lhs.second == rhs.second; - })); + ASSERT_TRUE(expected_result.size() == result.size()); + EXPECT_TRUE(std::equal(begin(result), end(result), begin(expected_result), + [](const auto& lhs, const auto& rhs) { + return lhs.first == rhs.first && + lhs.second == rhs.second; + })); } diff --git a/homework/transform-containers/transform.cpp b/homework/transform-containers/transform.cpp index a7fe5feca..1b66340f2 100644 --- a/homework/transform-containers/transform.cpp +++ b/homework/transform-containers/transform.cpp @@ -1,14 +1,21 @@ #include "transform.hpp" -std::map removeDuplicateAndTranformToMap(std::list& l, std::deque& d) { - std::sort(d.begin(), d.end()); - l.sort([](auto a, auto b) { return std::lexicographical_compare(a.begin(), a.end(), b.begin(), b.end(), - [](auto c1, auto c2) { return std::tolower(c1) < std::tolower(c2); }); }); - auto it = std::unique(l.begin(), l.end()); - auto it2 = std::unique(d.begin(), d.end()); - std::map result; - auto dst1 = std::distance(it, l.begin()); - auto dst2 = std::distance(it2, d.begin()); - std::transform(l.begin(), it, d.begin(), std::inserter(result, result.begin()), [](auto s, auto i) mutable { return std::make_pair(i, s); }); - return result; +std::map removeDuplicateAndTranformToMap( + std::list& l, + std::deque& d) { + std::sort(d.begin(), d.end()); + l.sort([](auto a, auto b) { + return std::lexicographical_compare( + a.begin(), a.end(), b.begin(), b.end(), + [](auto c1, auto c2) { return std::tolower(c1) < std::tolower(c2); }); + }); + auto it = std::unique(l.begin(), l.end()); + auto it2 = std::unique(d.begin(), d.end()); + std::map result; + auto dst1 = std::distance(it, l.begin()); + auto dst2 = std::distance(it2, d.begin()); + std::transform(l.begin(), it, d.begin(), + std::inserter(result, result.begin()), + [](auto s, auto i) mutable { return std::make_pair(i, s); }); + return result; }; diff --git a/homework/transform-containers/transform.hpp b/homework/transform-containers/transform.hpp index fc4438cab..327e98a7b 100644 --- a/homework/transform-containers/transform.hpp +++ b/homework/transform-containers/transform.hpp @@ -6,7 +6,8 @@ #include #include #include -#include #include -std::map removeDuplicateAndTranformToMap(std::list& l, std::deque& d); +std::map removeDuplicateAndTranformToMap( + std::list& l, + std::deque& d); From f3ef01a083f750a72972145895dc9e5d647d36c0 Mon Sep 17 00:00:00 2001 From: kp889 Date: Thu, 2 Jan 2025 06:42:31 +0100 Subject: [PATCH 4/4] formating upgrade --- homework/transform-containers/test.cpp | 26 +++++++++--------- homework/transform-containers/transform.cpp | 30 ++++++++++----------- 2 files changed, 28 insertions(+), 28 deletions(-) diff --git a/homework/transform-containers/test.cpp b/homework/transform-containers/test.cpp index e4414d6c9..f8764e5c4 100644 --- a/homework/transform-containers/test.cpp +++ b/homework/transform-containers/test.cpp @@ -5,18 +5,18 @@ // TODO: add proper includes TEST(transformContainerTests, ShouldReturnUniqueMap) { - std::map expected_result{ - {1, "Ala"}, {2, "Kot"}, {3, "Ma"}, {4, "Rysia"}, {5, "Sierotka"}}; - std::list list{"Ala", "Kot", "Ma", "Rysia", "Ala", - "Sierotka", "Kot", "Ma", "Ala"}; - std::deque deque{1, 2, 3, 4, 5, 3, 1, 2, 3, 4, - 5, 2, 3, 1, 1, 2, 3, 2, 1, 4}; - auto result = removeDuplicateAndTranformToMap(list, deque); + std::map expected_result{ + {1, "Ala"}, {2, "Kot"}, {3, "Ma"}, {4, "Rysia"}, {5, "Sierotka"}}; + std::list list{"Ala", "Kot", "Ma", "Rysia", "Ala", + "Sierotka", "Kot", "Ma", "Ala"}; + std::deque deque{1, 2, 3, 4, 5, 3, 1, 2, 3, 4, + 5, 2, 3, 1, 1, 2, 3, 2, 1, 4}; + auto result = removeDuplicateAndTranformToMap(list, deque); - ASSERT_TRUE(expected_result.size() == result.size()); - EXPECT_TRUE(std::equal(begin(result), end(result), begin(expected_result), - [](const auto& lhs, const auto& rhs) { - return lhs.first == rhs.first && - lhs.second == rhs.second; - })); + ASSERT_TRUE(expected_result.size() == result.size()); + EXPECT_TRUE(std::equal(begin(result), end(result), begin(expected_result), + [](const auto& lhs, const auto& rhs) { + return lhs.first == rhs.first && + lhs.second == rhs.second; + })); } diff --git a/homework/transform-containers/transform.cpp b/homework/transform-containers/transform.cpp index 1b66340f2..b200ce8ab 100644 --- a/homework/transform-containers/transform.cpp +++ b/homework/transform-containers/transform.cpp @@ -3,19 +3,19 @@ std::map removeDuplicateAndTranformToMap( std::list& l, std::deque& d) { - std::sort(d.begin(), d.end()); - l.sort([](auto a, auto b) { - return std::lexicographical_compare( - a.begin(), a.end(), b.begin(), b.end(), - [](auto c1, auto c2) { return std::tolower(c1) < std::tolower(c2); }); - }); - auto it = std::unique(l.begin(), l.end()); - auto it2 = std::unique(d.begin(), d.end()); - std::map result; - auto dst1 = std::distance(it, l.begin()); - auto dst2 = std::distance(it2, d.begin()); - std::transform(l.begin(), it, d.begin(), - std::inserter(result, result.begin()), - [](auto s, auto i) mutable { return std::make_pair(i, s); }); - return result; + std::sort(d.begin(), d.end()); + l.sort([](auto a, auto b) { + return std::lexicographical_compare( + a.begin(), a.end(), b.begin(), b.end(), + [](auto c1, auto c2) { return std::tolower(c1) < std::tolower(c2); }); + }); + auto it = std::unique(l.begin(), l.end()); + auto it2 = std::unique(d.begin(), d.end()); + std::map result; + auto dst1 = std::distance(it, l.begin()); + auto dst2 = std::distance(it2, d.begin()); + std::transform(l.begin(), it, d.begin(), + std::inserter(result, result.begin()), + [](auto s, auto i) mutable { return std::make_pair(i, s); }); + return result; };