aboutsummaryrefslogtreecommitdiff
path: root/challenge-050/paulo-custodio/python/ch-1.py
diff options
context:
space:
mode:
authorLubos Kolouch <lubos@kolouch.net>2024-09-16 09:41:35 +0200
committerLubos Kolouch <lubos@kolouch.net>2024-09-16 09:41:35 +0200
commit65b9d6b25e0a823ca7ab6d15744ff98eb3697471 (patch)
treefcbcdebd50e3e146dfecf519701ec04b191053eb /challenge-050/paulo-custodio/python/ch-1.py
parentbd1fe7ae50ca42bda58c134b9edfdc287fb3f386 (diff)
parent68e321dd32a834f54b55d5e8924f04358e41cf1f (diff)
downloadperlweeklychallenge-club-65b9d6b25e0a823ca7ab6d15744ff98eb3697471.tar.gz
perlweeklychallenge-club-65b9d6b25e0a823ca7ab6d15744ff98eb3697471.tar.bz2
perlweeklychallenge-club-65b9d6b25e0a823ca7ab6d15744ff98eb3697471.zip
Merge remote-tracking branch 'upstream/master'
Diffstat (limited to 'challenge-050/paulo-custodio/python/ch-1.py')
-rw-r--r--challenge-050/paulo-custodio/python/ch-1.py41
1 files changed, 41 insertions, 0 deletions
diff --git a/challenge-050/paulo-custodio/python/ch-1.py b/challenge-050/paulo-custodio/python/ch-1.py
new file mode 100644
index 0000000000..580abc00a5
--- /dev/null
+++ b/challenge-050/paulo-custodio/python/ch-1.py
@@ -0,0 +1,41 @@
+#!/usr/bin/env python3
+
+# Challenge 050
+#
+# TASK #1
+# Merge Intervals
+# Write a script to merge the given intervals where ever possible.
+#
+# [2,7], [3,9], [10,12], [15,19], [18,22]
+#
+# The script should merge [2, 7] and [3, 9] together to return [2, 9].
+#
+# Similarly it should also merge [15, 19] and [18, 22] together to return
+# [15, 22].
+#
+# The final result should be something like below:
+#
+# [2, 9], [10, 12], [15, 22]
+
+import sys
+
+def merge_intervals(intervals):
+ done = False
+ while not done:
+ done = True
+ for i in range(len(intervals)-1):
+ a = intervals[i]
+ b = intervals[i+1]
+ if a[1] >= b[0]:
+ a[1] = max(a[1], b[1])
+ intervals = intervals[0:i+1] + intervals[i+2:]
+ done = False
+ break
+ return intervals
+
+intervals = []
+for i in range(1, len(sys.argv), 2):
+ intervals.append([int(sys.argv[i]), int(sys.argv[i+1])])
+
+merged = merge_intervals(intervals)
+print(", ".join("["+str(x[0])+", "+str(x[1])+"]" for x in merged))