From 40125a7671e65336f2b00e5dd385015ea62d51f3 Mon Sep 17 00:00:00 2001 From: Mohammad S Anwar Date: Mon, 8 Jul 2024 14:38:44 +0100 Subject: - Added solutions by Eric Cheung. - Added solutions by Ulrich Rieke. - Added solutions by PokGoPun. - Added solutions by Niels van Dijke. - Added solutions by Mark Anderson. - Added solutions by Feng Chang. --- challenge-277/ulrich-rieke/cpp/ch-1.cpp | 40 +++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100755 challenge-277/ulrich-rieke/cpp/ch-1.cpp (limited to 'challenge-277/ulrich-rieke/cpp/ch-1.cpp') diff --git a/challenge-277/ulrich-rieke/cpp/ch-1.cpp b/challenge-277/ulrich-rieke/cpp/ch-1.cpp new file mode 100755 index 0000000000..df1d66194e --- /dev/null +++ b/challenge-277/ulrich-rieke/cpp/ch-1.cpp @@ -0,0 +1,40 @@ +#include +#include +#include +#include +#include +#include + +std::vector split( std::string text , char delim ) { + auto parts = text | std::views::split( delim ) + | std::views::transform( []( auto&& subpart ) { + return std::string( subpart.begin( ) , + subpart.end( ) ) ; }) ; + std::vector words ( parts.begin( ) , parts.end( ) ) ; + return words ; +} + +int main( ) { + std::cout << "Enter some words , separated by blanks!\n" ; + std::string firstLine , secondLine ; + std::getline( std::cin , firstLine ) ; + std::cout << "Enter some more words , separated by blanks!\n" ; + std::getline( std::cin , secondLine ) ; + std::vector firstWords( split( firstLine , ' ' ) ) ; + std::vector secondWords( split( secondLine , ' ' ) ) ; + std::vector common_words ; + std::ranges::sort( firstWords ) ; //intersection only on sorted containers! + std::ranges::sort( secondWords ) ; + std::set_intersection( firstWords.begin( ) , firstWords.end( ) , + secondWords.begin( ) , secondWords.end( ) , std::back_inserter( + common_words ) ) ; + std::map firstFreq , secondFreq ; + for ( auto s : firstWords ) + firstFreq[s]++ ; + for ( auto s : secondWords ) + secondFreq[s]++ ; + std::cout << std::count_if( common_words.begin( ) , common_words.end( ), + [&firstFreq , &secondFreq]( auto s ){ return firstFreq.find( s ) + ->second == 1 && secondFreq.find( s )->second == 1 ; } ) << '\n' ; + return 0 ; +} -- cgit