From 719bb667e47739c4ee6d28a9231eddb0fc938aa5 Mon Sep 17 00:00:00 2001 From: kp889 Date: Mon, 23 Dec 2024 08:20:56 +0100 Subject: [PATCH 1/6] added main and body of function --- homework/insensitive-palindrom/ispalindrom.cpp | 14 ++++++++++++++ homework/insensitive-palindrom/ispalindrom.hpp | 0 homework/insensitive-palindrom/main.cpp | 14 ++++++++++++++ 3 files changed, 28 insertions(+) create mode 100644 homework/insensitive-palindrom/ispalindrom.cpp create mode 100644 homework/insensitive-palindrom/ispalindrom.hpp create mode 100644 homework/insensitive-palindrom/main.cpp diff --git a/homework/insensitive-palindrom/ispalindrom.cpp b/homework/insensitive-palindrom/ispalindrom.cpp new file mode 100644 index 000000000..fe6e72672 --- /dev/null +++ b/homework/insensitive-palindrom/ispalindrom.cpp @@ -0,0 +1,14 @@ +#include "ispalindrom.hpp" + +bool is_palindrome(std::string phraseToTest) { + /* + --->skopjuj znaki do vectora jesli sa z zakresu znakow drukowalnych 32-128 + --->zamien na malelitery + ---?sprawedz czy jest lustrzanym odbiciem + */ + + std::vector PlaceHolder( + std::distance(phraseToTest.begin(), phraseToTest.end())); + std::copy_if(phraseToTest.begin(), phraseToTest.end(), PlaceHolder.begin(), + [](std::string s) {return s.c_str()[0]>32 && s.c_str()[0]<128 ? true:false;}); +}; \ No newline at end of file diff --git a/homework/insensitive-palindrom/ispalindrom.hpp b/homework/insensitive-palindrom/ispalindrom.hpp new file mode 100644 index 000000000..e69de29bb diff --git a/homework/insensitive-palindrom/main.cpp b/homework/insensitive-palindrom/main.cpp new file mode 100644 index 000000000..5b305ae6e --- /dev/null +++ b/homework/insensitive-palindrom/main.cpp @@ -0,0 +1,14 @@ +#include "ispalindrom.hpp" +#include +#include +#include +#include +#include +#include +#include + +int main() { + + // is_palindrome(std::string); + return 0; +} \ No newline at end of file From e5e077f2f6ca0d5f3a68f508c7595c627a42cca6 Mon Sep 17 00:00:00 2001 From: kp889 Date: Mon, 23 Dec 2024 08:21:32 +0100 Subject: [PATCH 2/6] as well test included --- homework/insensitive-palindrom/test.cpp | 39 +++++++++++++------------ 1 file changed, 20 insertions(+), 19 deletions(-) diff --git a/homework/insensitive-palindrom/test.cpp b/homework/insensitive-palindrom/test.cpp index dc5803917..f2b08d68f 100644 --- a/homework/insensitive-palindrom/test.cpp +++ b/homework/insensitive-palindrom/test.cpp @@ -2,36 +2,37 @@ // TODO: Includes -class InsensitivePalindromFixture : public ::testing::TestWithParam> { -}; +class InsensitivePalindromFixture + : public ::testing::TestWithParam> {}; TEST_P(InsensitivePalindromFixture, CheckPalindrome) { - EXPECT_EQ(is_palindrome(GetParam().first), GetParam().second); + EXPECT_EQ(is_palindrome(GetParam().first), GetParam().second); } INSTANTIATE_TEST_SUITE_P( - InsensitivePalindromTests, - InsensitivePalindromFixture, + InsensitivePalindromTests, InsensitivePalindromFixture, ::testing::Values( - std::make_pair("a", true), - std::make_pair("aba", true), + std::make_pair("a", true), std::make_pair("aba", true), std::make_pair("abba", true), std::make_pair("Eva, can I see bees in a cave?", true), std::make_pair("No lemon, no melon", true), std::make_pair("Was it a cat I saw?", true), std::make_pair("Red rum, sir, is murder", true), - std::make_pair("Are we not pure? “No, sir!” Panama’s moody Noriega brags." - "It is garbage!” Irony dooms a man—a prisoner up to new era.", - true), - std::make_pair("Dennis, Nell, Edna, Leon, Nedra, Anita, Rolf, Nora, Alice, Carol," - "Leo, Jane, Reed, Dena, Dale, Basil, Rae, Penny, Lana, Dave, Denny," - "Lena, Ida, Bernadette, Ben, Ray, Lila, Nina, Jo, Ira, Mara, Sara, " - "Mario, Jan, Ina, Lily, Arne, Bette, Dan, Reba, Diane, Lynn, Ed, Eva," - "Dana, Lynne, Pearl, Isabel, Ada, Ned, Dee, Rena, Joel, Lora, Cecil, " - "Aaron, Flora, Tina, Arden, Noel, and Ellen sinned.", - true), - std::make_pair("ab", false), - std::make_pair("abab", false), + std::make_pair( + "Are we not pure? “No, sir!” Panama’s moody Noriega brags." + "It is garbage!” Irony dooms a man—a prisoner up to new era.", + true), + std::make_pair( + "Dennis, Nell, Edna, Leon, Nedra, Anita, Rolf, Nora, Alice, Carol," + "Leo, Jane, Reed, Dena, Dale, Basil, Rae, Penny, Lana, Dave, Denny," + "Lena, Ida, Bernadette, Ben, Ray, Lila, Nina, Jo, Ira, Mara, Sara, " + "Mario, Jan, Ina, Lily, Arne, Bette, Dan, Reba, Diane, Lynn, Ed, " + "Eva," + "Dana, Lynne, Pearl, Isabel, Ada, Ned, Dee, Rena, Joel, Lora, " + "Cecil, " + "Aaron, Flora, Tina, Arden, Noel, and Ellen sinned.", + true), + std::make_pair("ab", false), std::make_pair("abab", false), std::make_pair("abb", false), std::make_pair("A nut for a jarr of tuna.", false), std::make_pair("All lets Della call Ed “Stella.”", false), From d7cee569a20e31cb97da4111f8d45dc24edd5e5f Mon Sep 17 00:00:00 2001 From: kp889 Date: Sun, 29 Dec 2024 05:54:49 +0100 Subject: [PATCH 3/6] to lowercase all leters --- homework/insensitive-palindrom/CMakeLists.txt | 2 +- homework/insensitive-palindrom/ispalindrom.cpp | 12 +++++++++--- homework/insensitive-palindrom/ispalindrom.hpp | 12 ++++++++++++ homework/insensitive-palindrom/main.cpp | 2 +- homework/insensitive-palindrom/test.cpp | 9 +++++++++ 5 files changed, 32 insertions(+), 5 deletions(-) diff --git a/homework/insensitive-palindrom/CMakeLists.txt b/homework/insensitive-palindrom/CMakeLists.txt index 9b1a9753b..4d245ecd6 100644 --- a/homework/insensitive-palindrom/CMakeLists.txt +++ b/homework/insensitive-palindrom/CMakeLists.txt @@ -18,7 +18,7 @@ FetchContent_MakeAvailable(googletest) project(insensitivePalindrom) enable_testing() -add_executable(${PROJECT_NAME}-ut test.cpp) # add your cpp file here after test.cpp +add_executable(${PROJECT_NAME}-ut test.cpp ispalindrom.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/insensitive-palindrom/ispalindrom.cpp b/homework/insensitive-palindrom/ispalindrom.cpp index fe6e72672..55919eeee 100644 --- a/homework/insensitive-palindrom/ispalindrom.cpp +++ b/homework/insensitive-palindrom/ispalindrom.cpp @@ -7,8 +7,14 @@ bool is_palindrome(std::string phraseToTest) { ---?sprawedz czy jest lustrzanym odbiciem */ - std::vector PlaceHolder( + std::vector PlaceHolder( std::distance(phraseToTest.begin(), phraseToTest.end())); - std::copy_if(phraseToTest.begin(), phraseToTest.end(), PlaceHolder.begin(), - [](std::string s) {return s.c_str()[0]>32 && s.c_str()[0]<128 ? true:false;}); + std::copy_if(phraseToTest.begin(), phraseToTest.end(), PlaceHolder.begin(), + [](auto spell) { + return spell > 32 && spell< 128 ? true :false; + + }); + std::transform(PlaceHolder.begin(), PlaceHolder.end(), PlaceHolder.begin(),[](unsigned char c){return std::tolower(c);}); + + return false; }; \ No newline at end of file diff --git a/homework/insensitive-palindrom/ispalindrom.hpp b/homework/insensitive-palindrom/ispalindrom.hpp index e69de29bb..7d0635aa8 100644 --- a/homework/insensitive-palindrom/ispalindrom.hpp +++ b/homework/insensitive-palindrom/ispalindrom.hpp @@ -0,0 +1,12 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include"cctype" + + +bool is_palindrome(std::string phraseToTest); \ No newline at end of file diff --git a/homework/insensitive-palindrom/main.cpp b/homework/insensitive-palindrom/main.cpp index 5b305ae6e..70d975119 100644 --- a/homework/insensitive-palindrom/main.cpp +++ b/homework/insensitive-palindrom/main.cpp @@ -1,6 +1,6 @@ #include "ispalindrom.hpp" #include -#include + #include #include #include diff --git a/homework/insensitive-palindrom/test.cpp b/homework/insensitive-palindrom/test.cpp index f2b08d68f..70e607972 100644 --- a/homework/insensitive-palindrom/test.cpp +++ b/homework/insensitive-palindrom/test.cpp @@ -1,4 +1,13 @@ +#include "ispalindrom.hpp" #include "gtest/gtest.h" +#include +#include +#include +#include +#include +#include +#include"cctype" + // TODO: Includes From 772f4e4af912f4f65c736711d793f12da41f26be Mon Sep 17 00:00:00 2001 From: kp889 Date: Sun, 29 Dec 2024 06:41:09 +0100 Subject: [PATCH 4/6] 1st version of insensitive palindrome' --- .../insensitive-palindrom/ispalindrom.cpp | 21 ++++++++++++------- homework/insensitive-palindrom/main.cpp | 3 ++- homework/insensitive-palindrom/test.cpp | 3 +-- 3 files changed, 16 insertions(+), 11 deletions(-) diff --git a/homework/insensitive-palindrom/ispalindrom.cpp b/homework/insensitive-palindrom/ispalindrom.cpp index 55919eeee..9fc1c60b7 100644 --- a/homework/insensitive-palindrom/ispalindrom.cpp +++ b/homework/insensitive-palindrom/ispalindrom.cpp @@ -9,12 +9,17 @@ bool is_palindrome(std::string phraseToTest) { std::vector PlaceHolder( std::distance(phraseToTest.begin(), phraseToTest.end())); - std::copy_if(phraseToTest.begin(), phraseToTest.end(), PlaceHolder.begin(), - [](auto spell) { - return spell > 32 && spell< 128 ? true :false; - - }); - std::transform(PlaceHolder.begin(), PlaceHolder.end(), PlaceHolder.begin(),[](unsigned char c){return std::tolower(c);}); - - return false; + std::copy_if(phraseToTest.begin(), phraseToTest.end(), PlaceHolder.begin(), + [](auto spell) { + return (spell > 47 && spell < 58) | + (spell > 64 && spell < 91) | + (spell > 96 && spell < 123) + ? true + : false; + }); + std::transform(PlaceHolder.begin(), PlaceHolder.end(), PlaceHolder.begin(), + [](unsigned char c) { return std::tolower(c); }); + + return std::equal(PlaceHolder.cbegin(), PlaceHolder.cend(), + PlaceHolder.crbegin()); }; \ No newline at end of file diff --git a/homework/insensitive-palindrom/main.cpp b/homework/insensitive-palindrom/main.cpp index 70d975119..c845ce79d 100644 --- a/homework/insensitive-palindrom/main.cpp +++ b/homework/insensitive-palindrom/main.cpp @@ -8,7 +8,8 @@ #include int main() { + std::string s{"Eva, can I see bees in a cave?"}; - // is_palindrome(std::string); + std::cout << is_palindrome(s); return 0; } \ No newline at end of file diff --git a/homework/insensitive-palindrom/test.cpp b/homework/insensitive-palindrom/test.cpp index 70e607972..9b1916b75 100644 --- a/homework/insensitive-palindrom/test.cpp +++ b/homework/insensitive-palindrom/test.cpp @@ -1,3 +1,4 @@ +#include "cctype" #include "ispalindrom.hpp" #include "gtest/gtest.h" #include @@ -6,8 +7,6 @@ #include #include #include -#include"cctype" - // TODO: Includes From 0a65f105879caecdb54d0f3fca942a9704a77b9a Mon Sep 17 00:00:00 2001 From: kp889 Date: Sun, 29 Dec 2024 07:10:29 +0100 Subject: [PATCH 5/6] changes to cmake list and basic function, copy if version --- homework/insensitive-palindrom/CMakeLists.txt | 5 +++-- homework/insensitive-palindrom/ispalindrom.cpp | 8 ++++++++ homework/insensitive-palindrom/main.cpp | 2 +- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/homework/insensitive-palindrom/CMakeLists.txt b/homework/insensitive-palindrom/CMakeLists.txt index 4d245ecd6..7adec5989 100644 --- a/homework/insensitive-palindrom/CMakeLists.txt +++ b/homework/insensitive-palindrom/CMakeLists.txt @@ -18,10 +18,11 @@ FetchContent_MakeAvailable(googletest) project(insensitivePalindrom) enable_testing() -add_executable(${PROJECT_NAME}-ut test.cpp ispalindrom.cpp) # add your cpp file here after test.cpp +add_executable(${PROJECT_NAME}-ut test.cpp ispalindrom.cpp) +add_executable(${PROJECT_NAME} main.cpp ispalindrom.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) +add_compile_options(${PROJECT_NAME} -Wall -Wextra -Wconversion -pedantic -Werror) target_link_libraries(${PROJECT_NAME}-ut gtest_main) diff --git a/homework/insensitive-palindrom/ispalindrom.cpp b/homework/insensitive-palindrom/ispalindrom.cpp index 9fc1c60b7..a8ba39e1c 100644 --- a/homework/insensitive-palindrom/ispalindrom.cpp +++ b/homework/insensitive-palindrom/ispalindrom.cpp @@ -17,8 +17,16 @@ bool is_palindrome(std::string phraseToTest) { ? true : false; }); + + std::copy(PlaceHolder.begin(), PlaceHolder.end(), + std::ostream_iterator(std::cout, "")); + std::cout << "\n"; std::transform(PlaceHolder.begin(), PlaceHolder.end(), PlaceHolder.begin(), [](unsigned char c) { return std::tolower(c); }); + PlaceHolder.shrink_to_fit(); + std::cout << "elem 28 " << PlaceHolder[28] << "\n"; + std::copy(PlaceHolder.begin(), PlaceHolder.end(), + std::ostream_iterator(std::cout, "")); return std::equal(PlaceHolder.cbegin(), PlaceHolder.cend(), PlaceHolder.crbegin()); diff --git a/homework/insensitive-palindrom/main.cpp b/homework/insensitive-palindrom/main.cpp index c845ce79d..96554ccd4 100644 --- a/homework/insensitive-palindrom/main.cpp +++ b/homework/insensitive-palindrom/main.cpp @@ -10,6 +10,6 @@ int main() { std::string s{"Eva, can I see bees in a cave?"}; - std::cout << is_palindrome(s); + std::cout << std::boolalpha << is_palindrome(s); return 0; } \ No newline at end of file From 9b1a9849c055caf09669b6788289ee3b8c391d23 Mon Sep 17 00:00:00 2001 From: kp889 Date: Sun, 29 Dec 2024 07:28:23 +0100 Subject: [PATCH 6/6] removes all empty vector elements --- homework/insensitive-palindrom/ispalindrom.cpp | 10 +++------- homework/insensitive-palindrom/main.cpp | 2 +- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/homework/insensitive-palindrom/ispalindrom.cpp b/homework/insensitive-palindrom/ispalindrom.cpp index a8ba39e1c..77f77e680 100644 --- a/homework/insensitive-palindrom/ispalindrom.cpp +++ b/homework/insensitive-palindrom/ispalindrom.cpp @@ -18,15 +18,11 @@ bool is_palindrome(std::string phraseToTest) { : false; }); - std::copy(PlaceHolder.begin(), PlaceHolder.end(), - std::ostream_iterator(std::cout, "")); - std::cout << "\n"; std::transform(PlaceHolder.begin(), PlaceHolder.end(), PlaceHolder.begin(), [](unsigned char c) { return std::tolower(c); }); - PlaceHolder.shrink_to_fit(); - std::cout << "elem 28 " << PlaceHolder[28] << "\n"; - std::copy(PlaceHolder.begin(), PlaceHolder.end(), - std::ostream_iterator(std::cout, "")); + + PlaceHolder.resize(distance(PlaceHolder.begin(), + find(PlaceHolder.begin(), PlaceHolder.end(), 0))); return std::equal(PlaceHolder.cbegin(), PlaceHolder.cend(), PlaceHolder.crbegin()); diff --git a/homework/insensitive-palindrom/main.cpp b/homework/insensitive-palindrom/main.cpp index 96554ccd4..a60dbbe18 100644 --- a/homework/insensitive-palindrom/main.cpp +++ b/homework/insensitive-palindrom/main.cpp @@ -12,4 +12,4 @@ int main() { std::cout << std::boolalpha << is_palindrome(s); return 0; -} \ No newline at end of file +}