Сегодня мой профессор CPSC назначил викторину в python, тема была рекурсией.
Весь класс застрял на вопросе номер два, который ниже. Никто не смог даже приблизиться к решению.
def sub_set(A):
if A == []: return A
X = sub_set(A[1:])
result = []
for L in X:
result += _____
return _____
Пример кода:
print(sub_set([1, 2])) # [[], [1], [2], [1, 2]]
print(sub_set([1, 2, 3])) # [[], [1], [2], [1, 2], [3], [1, 3], [2, 3], [1, 2, 3]]
Вам разрешено изменять символы подчеркивания, например, мой пример ниже.
Мое решение было настолько далеким от закрытия, что его даже не следует рассматривать:
def sub_set(A):
if A == []: return A
X = sub_set(A[1:])
result = []
for L in X:
result += _____
return result + [A[:1]] + [A] + [A[::2]]
#sub_set([1, 2, 3]) -> [[3], [3], [3], [2], [2, 3], [2], [1], [1, 2, 3], [1, 3]]
Кто-нибудь знает, как это можно решить? Это кажется довольно сложной проблемой, когда у нас есть только 15 минут, чтобы решить эту проблему.
Просто для справки, он сказал, что бросит вопрос, не рассматривая никого в классе - продвинутый класс comp sci примерно из 10 тщательно отобранных студентов - мог бы его решить.