diff --git a/homework/insensitive-palindrom/CMakeLists.txt b/homework/insensitive-palindrom/CMakeLists.txt index 9b1a9753b..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) # 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 new file mode 100644 index 000000000..77f77e680 --- /dev/null +++ b/homework/insensitive-palindrom/ispalindrom.cpp @@ -0,0 +1,29 @@ +#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(), + [](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); }); + + PlaceHolder.resize(distance(PlaceHolder.begin(), + find(PlaceHolder.begin(), PlaceHolder.end(), 0))); + + return std::equal(PlaceHolder.cbegin(), PlaceHolder.cend(), + PlaceHolder.crbegin()); +}; \ 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..7d0635aa8 --- /dev/null +++ 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 new file mode 100644 index 000000000..a60dbbe18 --- /dev/null +++ b/homework/insensitive-palindrom/main.cpp @@ -0,0 +1,15 @@ +#include "ispalindrom.hpp" +#include + +#include +#include +#include +#include +#include + +int main() { + std::string s{"Eva, can I see bees in a cave?"}; + + std::cout << std::boolalpha << is_palindrome(s); + return 0; +} diff --git a/homework/insensitive-palindrom/test.cpp b/homework/insensitive-palindrom/test.cpp index dc5803917..9b1916b75 100644 --- a/homework/insensitive-palindrom/test.cpp +++ b/homework/insensitive-palindrom/test.cpp @@ -1,37 +1,46 @@ +#include "cctype" +#include "ispalindrom.hpp" #include "gtest/gtest.h" +#include +#include +#include +#include +#include +#include // 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),