Мне было предложено создать функции в Python БЕЗ использования циклов и деревьев для представления кодировки Хаффмана. Я создал функцию, которая с этого входа:Рекурсивное кодирование Хаффмана в Python
[('a',4),('b',10),('c',15),('d',18),('e',42),('f',11)]
дает этот вывод:
('e', (('f', ('a', 'b')), ('c', 'd')))
Теперь я должен создать функцию, которая кодирует этот вывод в
[('e','0') , ('f','100') , ('a', '1010') , ('b' , '1011') , ('c', '110') , ('d','111') ]
Я понятия не имею, как (без использования циклов) изменить кортеж на список и в то же время добавить 1
и 0
к определенным элементам.
Знаете ли вы, что такое рекурсивная функция? Потому что я уверен, что «БЕЗ использования циклов» означает, что вы должны написать рекурсивную функцию. Посмотрите на формат ввода: это кортеж из двух вещей, каждый из которых представляет собой либо букву, либо другой кортеж. Это должно сказать вам, как разложить его рекурсивно. – abarnert
Рекурсия для изучения подробнее. ** Подсказка: ** Рекурсия - это цикл, только в другой форме. –
Кроме того, я не уверен, как это «без использования деревьев»; вложенный список (или кортеж) является одним из наиболее очевидных способов представления дерева (как половина упражнений в любом учебнике на основе Lisp доказывает ...). – abarnert