Игры со сложением

Как обычно, ваша задача — написать функцию. Функция будет принимать любое число. Из цифр этого числа нужно будет составить пары и сложить получившиеся числа. Функция должна вернуть сумму чисел, составленных из пар цифр.

Для составления пары берем первую и последнюю цифру числа, продвигаясь от краев к центру.

Пример с разбором

 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)