From 061fd6e6c13501a82c05dc2d8e989ed0c28c212b Mon Sep 17 00:00:00 2001 From: Mohammad S Anwar Date: Fri, 2 Sep 2022 17:19:50 +0100 Subject: - Added guest contributions by Humberto Massa. --- challenge-180/massa/cpp/ch-1.cc | 25 ------------------------- challenge-180/massa/cpp/ch-1.cpp | 25 +++++++++++++++++++++++++ challenge-180/massa/cpp/ch-2.cc | 19 ------------------- challenge-180/massa/cpp/ch-2.cpp | 19 +++++++++++++++++++ 4 files changed, 44 insertions(+), 44 deletions(-) delete mode 100644 challenge-180/massa/cpp/ch-1.cc create mode 100644 challenge-180/massa/cpp/ch-1.cpp delete mode 100644 challenge-180/massa/cpp/ch-2.cc create mode 100644 challenge-180/massa/cpp/ch-2.cpp diff --git a/challenge-180/massa/cpp/ch-1.cc b/challenge-180/massa/cpp/ch-1.cc deleted file mode 100644 index f6e69de7f2..0000000000 --- a/challenge-180/massa/cpp/ch-1.cc +++ /dev/null @@ -1,25 +0,0 @@ - -#include -#include -#include -#include - -template S> -It first_unique(It begin, S end) { - for( auto it = begin; it != end; ++it ) - if( std::find(begin, it, *it) == it && std::find(it+1, end, *it) == end ) - return it; - return end; -} - -auto first_unique(std::ranges::input_range auto range) { - return first_unique(begin(range), end(range)); -} - -int main(int argc, char **argv) { - for( std::string_view a: std::span { argv+1, argv+argc } ) { - auto u = first_unique(a); - std::cout << (u == std::end(a) ? -1 : u - std::begin(a)) << ' ' << a << '\n'; - } -} - diff --git a/challenge-180/massa/cpp/ch-1.cpp b/challenge-180/massa/cpp/ch-1.cpp new file mode 100644 index 0000000000..f6e69de7f2 --- /dev/null +++ b/challenge-180/massa/cpp/ch-1.cpp @@ -0,0 +1,25 @@ + +#include +#include +#include +#include + +template S> +It first_unique(It begin, S end) { + for( auto it = begin; it != end; ++it ) + if( std::find(begin, it, *it) == it && std::find(it+1, end, *it) == end ) + return it; + return end; +} + +auto first_unique(std::ranges::input_range auto range) { + return first_unique(begin(range), end(range)); +} + +int main(int argc, char **argv) { + for( std::string_view a: std::span { argv+1, argv+argc } ) { + auto u = first_unique(a); + std::cout << (u == std::end(a) ? -1 : u - std::begin(a)) << ' ' << a << '\n'; + } +} + diff --git a/challenge-180/massa/cpp/ch-2.cc b/challenge-180/massa/cpp/ch-2.cc deleted file mode 100644 index a878f2dbf5..0000000000 --- a/challenge-180/massa/cpp/ch-2.cc +++ /dev/null @@ -1,19 +0,0 @@ - -#include -#include -#include -#include - -std::ostream& operator<<(std::ostream &o, std::ranges::range auto r) { - if( begin(r) == end(r) ) return o; - std::copy(begin(r), end(r)-1, std::ostream_iterator{o, ", "}); - return o << end(r)[-1]; -} - -int main(int argc, char **argv) { - if( argc <= 1 ) return 0; - int needle = std::stoi(argv[1]); - auto e = std::remove_if(argv+2, argv+argc, [=](auto x){ return std::stoi(x) <= needle; }); - std::cout << std::span{ argv+2, e } << '\n'; -} - diff --git a/challenge-180/massa/cpp/ch-2.cpp b/challenge-180/massa/cpp/ch-2.cpp new file mode 100644 index 0000000000..a878f2dbf5 --- /dev/null +++ b/challenge-180/massa/cpp/ch-2.cpp @@ -0,0 +1,19 @@ + +#include +#include +#include +#include + +std::ostream& operator<<(std::ostream &o, std::ranges::range auto r) { + if( begin(r) == end(r) ) return o; + std::copy(begin(r), end(r)-1, std::ostream_iterator{o, ", "}); + return o << end(r)[-1]; +} + +int main(int argc, char **argv) { + if( argc <= 1 ) return 0; + int needle = std::stoi(argv[1]); + auto e = std::remove_if(argv+2, argv+argc, [=](auto x){ return std::stoi(x) <= needle; }); + std::cout << std::span{ argv+2, e } << '\n'; +} + -- cgit