-
Notifications
You must be signed in to change notification settings - Fork 0
/
part-sum.py
51 lines (34 loc) · 1.34 KB
/
part-sum.py
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
44
45
46
47
48
49
50
51
# Let us consider this example (array written in general format):
# ls = [0, 1, 3, 6, 10]
# Its following parts:
# ls = [0, 1, 3, 6, 10]
# ls = [1, 3, 6, 10]
# ls = [3, 6, 10]
# ls = [6, 10]
# ls = [10]
# ls = []
# The corresponding sums are (put together in a list): [20, 20, 19, 16, 10, 0]
# The function parts_sums (or its variants in other languages) will take as
# parameter a list ls and return a list of the sums of its parts as defined above.
# Other Examples:
# ls = [1, 2, 3, 4, 5, 6]
# parts_sums(ls) -> [21, 20, 18, 15, 11, 6, 0]
# ls = [744125, 935, 407, 454, 430, 90, 144, 6710213, 889, 810, 2579358]
# parts_sums(ls) -> [10037855, 9293730, 9292795, 9292388, 9291934, 9291504,
# 9291414, 9291270, 2581057, 2580168, 2579358, 0]
def parts_sums(ls):
"""Given a list return a list of the sums."""
n = [sum(ls)]
for number in ls:
n.append(n[-1]-number)
return n
print(parts_sums([0, 1, 3, 6, 10])) #[20, 20, 19, 16, 10, 0]
print(parts_sums([1, 2, 3, 4, 5, 6] )) #[21, 20, 18, 15, 11, 6, 0]
print(parts_sums([744125, 935, 407, 454, 430, 90, 144, 6710213, 889, 810, 2579358]))
#[10037855, 9293730, 9292795, 9292388, 9291934, 9291504,
# 9291414, 9291270, 2581057, 2580168, 2579358, 0]
# get the count for the first one
# then add it to a list
# remove the first number
# get the
#set count to zero