aboutsummaryrefslogtreecommitdiff
path: root/challenge-243/ianrifkin/python/ch-1.py
blob: 2dc99b736c67ac74154cebfa16a8ad48ed697ef0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#!/usr/local/bin/python3
import sys, argparse

# Challenge 243, Task 1: Reverse Pairs

# You are given an array of integers.
# Write a script to return the number of reverse pairs in the given array.
# A reverse pair is a pair (i, j) where: a) 0 <= i < j < nums.length and b) nums[i] > 2 * nums[j].
# See https://theweeklychallenge.org/blog/perl-weekly-challenge-243/#TASK1 for more information on this challenge

def main(argv):
    argParser = argparse.ArgumentParser()
    argParser.add_argument("-n", "--nums", nargs='+', type=int, help="space seperated list of integers e.g. -n 10 30 4 5")
    args = argParser.parse_args()

    if args.nums:
        nums = args.nums
        print( reverse_pairs(nums) )
    else:
        #Example 1
        nums = (1, 3, 2, 3, 1)
        print( reverse_pairs(nums) )     
        #Example 2
        nums = (2, 4, 3, 5, 1)
        print( reverse_pairs(nums) )        
        
def reverse_pairs(nums):
    pairs_found = 0
    for i, inum in enumerate(nums):
        for j, jnum in enumerate(nums):
            if i >= j:
                pass
            else:
                if inum > jnum * 2:
                    pairs_found = pairs_found + 1
    return pairs_found
                    
        
if __name__ == "__main__":
   main(sys.argv[1:])