aboutsummaryrefslogtreecommitdiff
path: root/challenge-180/massa/cpp/ch-1.cpp
diff options
context:
space:
mode:
authorMohammad S Anwar <mohammad.anwar@yahoo.com>2022-09-02 17:19:50 +0100
committerMohammad S Anwar <mohammad.anwar@yahoo.com>2022-09-02 17:19:50 +0100
commit061fd6e6c13501a82c05dc2d8e989ed0c28c212b (patch)
treebbeca09234acb5ee5136c7c0d96fc5ed1a482682 /challenge-180/massa/cpp/ch-1.cpp
parentda8d3bf83591e1007844752e07eb7f56ee5305ca (diff)
downloadperlweeklychallenge-club-061fd6e6c13501a82c05dc2d8e989ed0c28c212b.tar.gz
perlweeklychallenge-club-061fd6e6c13501a82c05dc2d8e989ed0c28c212b.tar.bz2
perlweeklychallenge-club-061fd6e6c13501a82c05dc2d8e989ed0c28c212b.zip
- Added guest contributions by Humberto Massa.
Diffstat (limited to 'challenge-180/massa/cpp/ch-1.cpp')
-rw-r--r--challenge-180/massa/cpp/ch-1.cpp25
1 files changed, 25 insertions, 0 deletions
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 <span>
+#include <ranges>
+#include <iostream>
+#include <string_view>
+
+template <std::input_iterator It, std::sentinel_for<It> 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';
+ }
+}
+