diff options
| -rw-r--r-- | challenge-050/paulo-custodio/python/ch-1.py | 41 | ||||
| -rw-r--r-- | challenge-050/paulo-custodio/python/ch-2.py | 37 |
2 files changed, 78 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)) diff --git a/challenge-050/paulo-custodio/python/ch-2.py b/challenge-050/paulo-custodio/python/ch-2.py new file mode 100644 index 0000000000..7b3baa0f9d --- /dev/null +++ b/challenge-050/paulo-custodio/python/ch-2.py @@ -0,0 +1,37 @@ +#!/usr/bin/env python3 + +# Challenge 050 +# +# TASK #2 +# Contributed by Ryan Thompson. +# Noble Integer +# You are given a list, @L, of three or more random integers between 1 and 50. +# A Noble Integer is an integer N in @L, such that there are exactly N integers +# greater than N in @L. Output any Noble Integer found in @L, or an empty list +# if none were found. +# +# An interesting question is whether or not there can be multiple Noble Integers +# in a list. +# +# For example, +# +# Suppose we have list of 4 integers [2, 6, 1, 3]. +# +# Here we have 2 in the above list, known as Noble Integer, since there are +# exactly 2 integers in the list i.e.3 and 6, which are greater than 2. +# +# Therefore the script would print 2. + +import sys + +def noble_int(nums): + out = [] + for n in nums: + num_greater = len([x for x in filter(lambda x: x > n, nums)]) + if num_greater == n: + out.append(n) + return out + +nums = [int(x) for x in range(1, len(sys.argv))] +noble = noble_int(nums) +print("("+", ".join(str(x) for x in noble)+")") |
