diff options
Diffstat (limited to 'challenge-080/paulo-custodio/python')
| -rw-r--r-- | challenge-080/paulo-custodio/python/ch-1.py | 30 | ||||
| -rw-r--r-- | challenge-080/paulo-custodio/python/ch-2.py | 52 |
2 files changed, 82 insertions, 0 deletions
diff --git a/challenge-080/paulo-custodio/python/ch-1.py b/challenge-080/paulo-custodio/python/ch-1.py new file mode 100644 index 0000000000..ab14f9f759 --- /dev/null +++ b/challenge-080/paulo-custodio/python/ch-1.py @@ -0,0 +1,30 @@ +#!/usr/bin/python3 + +# Challenge 080 +# +# TASK #1 > Smallest Positive Number +# Submitted by: Mohammad S Anwar +# You are given unsorted list of integers @N. +# +# Write a script to find out the smallest positive number missing. +# +# Example 1: +# Input: @N = (5, 2, -2, 0) +# Output: 1 +# Example 2: +# Input: @N = (1, 8, -1) +# Output: 2 +# Example 3: +# Input: @N = (2, 0, -1) +# Output: 1 + +import sys + +def missing(nums): + nums = sorted(filter(lambda x:x>0, nums)) + for a,b in zip(nums, range(1, len(nums)+1)): + if a!=b: + return b + return len(nums)+1 + +print(missing([int(x) for x in sys.argv[1:]])) diff --git a/challenge-080/paulo-custodio/python/ch-2.py b/challenge-080/paulo-custodio/python/ch-2.py new file mode 100644 index 0000000000..f877f5aa47 --- /dev/null +++ b/challenge-080/paulo-custodio/python/ch-2.py @@ -0,0 +1,52 @@ +#!/usr/bin/python3 + +# Challenge 080 +# +# TASK #2 > Count Candies +# Submitted by: Mohammad S Anwar +# You are given rankings of @N candidates. +# +# Write a script to find out the total candies needed for all candidates. +# You are asked to follow the rules below: +# +# a) You must given at least one candy to each candidate. +# b) Candidate with higher ranking get more candies than their mmediate +# neighbors on either side. +# Example 1: +# Input: @N = (1, 2, 2) +# Explanation: +# Applying rule #a, each candidate will get one candy. So total candies needed +# so far 3. Now applying rule #b, the first candidate do not get any more candy +# as its rank is lower than it's neighbours. The second candidate gets one more +# candy as it's ranking is higher than it's neighbour. Finally the third +# candidate do not get any extra candy as it's ranking is not higher than +# neighbour. Therefore total candies required is 4. +# +# Output: 4 +# Example 2: +# Input: @N = (1, 4, 3, 2) +# Explanation: +# Applying rule #a, each candidate will get one candy. So total candies needed +# so far 4. Now applying rule #b, the first candidate do not get any more candy +# as its rank is lower than it's neighbours. The second candidate gets two more +# candies as it's ranking is higher than it's both neighbour. The third +# candidate gets one more candy as it's ranking is higher than it's neighbour. +# Finally the fourth candidate do not get any extra candy as it's ranking is +# not higher than neighbour. Therefore total candies required is 7. +# +# Output: 7 + +import sys + +def candies(n): + candy = [1 for x in n] + for i in range(len(n)): + if i>0: + if n[i]>n[i-1]: + candy[i] += 1 + if i<len(n)-1: + if n[i]>n[i+1]: + candy[i] += 1 + return candy + +print(sum(candies([int(x) for x in sys.argv[1:]]))) |
