-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsolution.py
30 lines (22 loc) · 1.33 KB
/
solution.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
# My friend John and I are members of the "Fat to Fit Club (FFC)".
# John is worried because each month a list with the weights of members is published and each month
# he is the last on the list which means he is the heaviest.
# I am the one who establishes the list so I told him: "Don't worry any more, I will modify the order of the list".
# It was decided to attribute a "weight" to numbers.
# The weight of a number will be from now on the sum of its digits.
# For example 99 will have "weight" 18, 100 will have "weight" 1 so in the list 100 will come before 99.
# Given a string with the weights of FFC members in normal order
# can you give this string ordered by "weights" of these numbers?
# Example:
# "56 65 74 100 99 68 86 180 90" ordered by numbers weights becomes: "100 180 90 56 65 74 68 86 99"
# When two numbers have the same "weight",
# let us class them as if they were strings and not numbers: 100 is before 180 because its "weight" (1)
# is less than the one of 180 (9) and 180 is before 90 since, having the same "weight" (9),
# it comes before as a string.
def order_weight(strng):
weights = sorted(strng.split())
num_weights = ()
for i in weights:
num_weights += ((sum(int(x) for x in i), i),)
num_weights = sorted(num_weights, key=lambda tup: tup[0])
return ' '.join([i[1] for i in num_weights])