aboutsummaryrefslogtreecommitdiff
path: root/challenge-127/deadmarshal/cpp
diff options
context:
space:
mode:
Diffstat (limited to 'challenge-127/deadmarshal/cpp')
-rw-r--r--challenge-127/deadmarshal/cpp/ch-1.cpp30
-rw-r--r--challenge-127/deadmarshal/cpp/ch-2.cpp37
2 files changed, 67 insertions, 0 deletions
diff --git a/challenge-127/deadmarshal/cpp/ch-1.cpp b/challenge-127/deadmarshal/cpp/ch-1.cpp
new file mode 100644
index 0000000000..b6cf02bb6a
--- /dev/null
+++ b/challenge-127/deadmarshal/cpp/ch-1.cpp
@@ -0,0 +1,30 @@
+#include<iostream>
+#include<vector>
+#include<set>
+
+template<typename T>
+bool is_disjoint(const std::set<T> &s1,
+ const std::set<T> &s2)
+{
+ for(auto it = s1.cbegin(); it != s1.cend(); ++it)
+ if(s2.count(*it)) return false;
+ return true;
+}
+
+template<typename T>
+bool disjoint_sets(const std::vector<T> &vec1,
+ const std::vector<T> &vec2)
+{
+ return is_disjoint<T>({vec1.cbegin(),vec1.cend()},
+ {vec2.cbegin(),vec2.cend()});
+}
+
+int main()
+{
+ std::vector<int> vec1{1,2,5,3,4},vec2{4,6,7,8,9};
+ std::vector<int> vec3{1,3,5,7,9},vec4{0,2,4,6,8};
+ std::cout << std::boolalpha << disjoint_sets<int>(vec1,vec2) << '\n'
+ << disjoint_sets<int>(vec3,vec4) << '\n';
+ return 0;
+}
+
diff --git a/challenge-127/deadmarshal/cpp/ch-2.cpp b/challenge-127/deadmarshal/cpp/ch-2.cpp
new file mode 100644
index 0000000000..23784eb6bc
--- /dev/null
+++ b/challenge-127/deadmarshal/cpp/ch-2.cpp
@@ -0,0 +1,37 @@
+#include<iostream>
+#include<vector>
+
+struct Interval
+{
+ friend std::ostream &operator<<(std::ostream &os,
+ const Interval &interval)
+ {
+ os << '(' << interval.x << ',' << interval.y << ')';
+ return os;
+ }
+
+ int x,y;
+};
+
+template<typename T>
+void conflict_intervals(const std::vector<T> &vec)
+{
+ for(size_t i = 1; i < vec.size(); ++i)
+ {
+ bool b = false;
+ for(size_t j = 0; j < i ; ++j)
+ if((vec.at(i).x >= vec.at(i).x) && (vec.at(i).x <= vec.at(j).y)) b = true;
+ if(b) std::cout << vec.at(i) << ' ';
+ }
+ std::cout << '\n';
+}
+
+int main()
+{
+ std::vector<Interval> vec1{{1,4},{3,5},{6,8},{12,13},{3,20}};
+ std::vector<Interval> vec2{{3,4},{5,7},{6,9},{10,12},{13,15}};
+ conflict_intervals<Interval>(vec1);
+ conflict_intervals<Interval>(vec2);
+ return 0;
+}
+