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:])
|