Как обычно, ваша задача — написать функцию. Функция будет принимать любое число. Из цифр этого числа нужно будет составить пары и сложить получившиеся числа. Функция должна вернуть сумму чисел, составленных из пар цифр.
Для составления пары берем первую и последнюю цифру числа, продвигаясь от краев к центру.
Пример с разбором
closing_in_sum(2520) ➞ 72 # Первая и последняя цифры - 2 и 0. # Из цифр 2 и 0 составляем число 20. # Вторая и предпоследняя цифра - 5 и 2. # Из цифр 5 и 2 составляем число 52. # 20 + 52 = 72
Другие примеры
closing_in_sum(121) ➞ 13 # 11 + 2 closing_in_sum(1039) ➞ 22 # 19 + 3 closing_in_sum(22225555) ➞ 100 # 25 + 25 + 25 + 25
Примечания
- Если передано число с нечетным количеством цифр, центральную цифру просто прибавляем к общей сумме (см. пример 1).
- Нуль тоже считаем отдельной цифрой (см. пример 2).
Варианты решений
def closing_in_sum(n):
n = str(n)
if len(n) <= 2:
return int(n)
return int(n[0] + n[-1]) + closing_in_sum(n[1:-1])
from itertools import zip_longest
def closing_in_sum(n):
s = str(n)
half = len(s) // 2
return sum(
int(i + j)
for i, j in zip_longest(s[:half], s[half:], fillvalue='0')
)
def zipper(a, b):
return sum([int(x + y) for x, y in zip(a, b)])
def closing_in_sum(num):
n = str(num)
l = len(n)
a = n[:l//2]
b = n[l//2 + 1:] if l % 2 else n[l//2:]
c = n[l//2]
return zipper(a, b) + int(c) if l % 2 else zipper(a, b)