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-2.cpp | 37 +++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100755 challenge-277/ulrich-rieke/cpp/ch-2.cpp (limited to 'challenge-277/ulrich-rieke/cpp/ch-2.cpp') diff --git a/challenge-277/ulrich-rieke/cpp/ch-2.cpp b/challenge-277/ulrich-rieke/cpp/ch-2.cpp new file mode 100755 index 0000000000..ec253a9451 --- /dev/null +++ b/challenge-277/ulrich-rieke/cpp/ch-2.cpp @@ -0,0 +1,37 @@ +#include +#include +#include +#include +#include +#include +#include // for abs +#include // for min + +bool condition( const std::pair & p ) { + int diff = std::abs( p.first - p.second ) ; + int mini = std::min( p.first , p.second ) ; + return ( 0 < diff && ( diff < mini ) ) ; +} + +int main( ) { + std::cout << "Enter some integers, separated by blanks!\n" ; + std::cout << "Enter e to end!\n" ; + std::vector numbers { std::istream_iterator( std::cin ) , + std::istream_iterator( ) } ; + std::vector> combinations , selected ; + int len = numbers.size( ) ; + for ( int i = 0 ; i < len - 1 ; i++ ) { + for ( int j = i + 1 ; j < len ; j++ ) { + combinations.push_back( std::make_pair( numbers[i] , + numbers[j] )) ; + } + } + std::copy_if( combinations.begin( ) , combinations.end( ) , + std::back_inserter( selected ) , condition ) ; + //by creating a set from the vector selected that contains the pairs + //fulfilling the condition we remove duplicates + std::set> uniques ( selected.begin( ) , + selected.end( ) ) ; + std::cout << uniques.size( ) << '\n' ; + return 0 ; +} -- cgit