Меня просят определить рекурсивную функцию, которая принимает список и затем назначает значения этого списка среди двух других списков таким образом , что при получении суммы из каждого из этих двух списков вы получаете два результата, которые находятся в непосредственной близости друг от друга.
Пример
Если я бегу:
print(proximity_lists([5, 8, 8, 9, 17, 21, 24, 27, 31, 41]))
Я получаю два списка:
[31, 27, 21, 9, 8] #sum = 96
[41, 24, 17, 8, 5] #sum = 95
Вот как я это сделал, однако я не могу понять, как вернуть два списка в рекурсивной функции. До сих пор мне было комфортно в условиях, когда мне приходилось возвращать один список.
Это мой код:
def proximity_lists(lst, lst1 = [], lst2 = []):
"""
parameters : lst of type list;
returns : returns two lists such that the sum of the elements in the lst1
is in the proximity of the sum of the elements in the lst2
"""
if not lst:
if abs(sum(lst1)-sum(lst2)) in range(5):
return lst1, lst2
else:
return {Not sure what to put here} + proximity_lists(lst[1:])
Что касается range()
, то для аргумента может потребоваться что угодно, лишь бы он был ближайшим, который они могут получить в непосредственной близости друг от друга . Я выбрал 5, потому что в приведенном выше примере разница между ними равна 1.
Мне нужно добавить, что это должно быть сделано без помощи каких-либо модулей. Это было сделано с помощью простых функций.