Счастливая семерка

Стикер с цифрой 7.

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

Примечания

  • В списке всегда будут только числа.
  • Естественно, если в списке меньше трех элементов, функция должна вернуть False.

Примеры

 lucky_seven([2, 4, 3, 8, 9, 1]) ➞ True
 lucky_seven([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]) ➞ True
 lucky_seven([0, 0, 0, 2, 3]) ➞ False
 # Нельзя повторять одно число дважды, т.е. вариант 2 + 2 + 3 = 7 невозможен.
 lucky_seven([4, 3]) ➞ False
 # Нужны три разных числа.

Варианты решения

def lucky_seven(lst):
    for i in range(len(lst)):
        for j in range(i+1, len(lst)):
            for k in range(j+1, len(lst)):
                if lst[i] + lst[j] + lst[k] == 7:
                    return True
    return False
from itertools import combinations
​
def lucky_seven(r):
    return any(sum(x) == 7 for x in combinations(r, 3))
from itertools import combinations
​
def lucky_seven(lst):
    return any(sum(subset) == 7 for subset in combinations(set(lst), 3))
python books logo

Хотите решать больше задач по Python

Подписывайтесь на нас в Телеграм

×