-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsolution.py
25 lines (17 loc) · 895 Bytes
/
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
# introduced in the title of this kata.
# What's the use of saying "Eureka"? Because this sum gives the same number.
# In effect: 89 = 8^1 + 9^2
# The next number in having this property is 135.
# See this property again: 135 = 1^1 + 3^2 + 5^3
# We need a function to collect these numbers, that may receive two integers a, b
# that defines the range [a, b] (inclusive) and outputs a list of the sorted numbers
# in the range that fulfills the property described above.
# Let's see some cases:
# sum_dig_pow(1, 10) == [1, 2, 3, 4, 5, 6, 7, 8, 9]
# sum_dig_pow(1, 100) == [1, 2, 3, 4, 5, 6, 7, 8, 9, 89]
# If there are no numbers of this kind in the range [a, b] the function should output an empty list.
# sum_dig_pow(90, 100) == []
def sum_dig_pow(a, b):
def f(x):
return sum(int(x) ** (i + 1) for i, x in enumerate(str(x))) == x
return list(filter(f, range(a, b + 1)))