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
41
42
43
|
#!/usr/bin/env python3
from itertools import permutations
def calculate_greatness(elements, permutation):
''' Calculate greatness of array of integers and a permutation
>>> calculate_greatness([1, 3, 5, 2, 1, 3, 1], [2, 5, 1, 3, 3, 1, 1])
4
>>> calculate_greatness([1, 2, 3, 4], [2, 3, 4, 1])
3
>>> calculate_greatness([1, 2], [1, 2])
0
'''
count = 0
for index, elem in enumerate(elements):
if elem < permutation[index]:
count += 1
return count
def maximise_greatness(elements):
''' return maximum possible greatness from permutations of an array of integers
>>> maximise_greatness([1, 3, 5, 2, 1, 3, 1])
4
>>> maximise_greatness([1, 2, 3, 4])
3
>>> maximise_greatness([1, 1, 1])
0
'''
perms = set(permutations(elements))
max_greatness = 0
for permutation in perms:
greatness = calculate_greatness(elements, permutation)
if greatness > max_greatness:
max_greatness = greatness
return max_greatness
if __name__ == "__main__":
import doctest
doctest.testmod()
|