Юникод, префиксные коды, код Хаффмана | Скринкасты
Вставка
- Опубліковано 17 жов 2024
- В этом выпуске Вадим (руководитель группы разработки бэкенда Маруси) расскажет, что такое юникод, как устроены его кодировки, и какая математика лежит в основе этого всего. При чем тут префиксные коды, код Хаффмана, и как это реализовать на Python.
Юникод - это кодировка? А что тогда такое UTF8? Какие коды называются префиксными? Как работают кодировки переменной длины? Как лучше кодировать символы, которые встречаются в тексте с разной частотой? Как построить очередь с приоритетами, и при чем тут куча? Ответы - в этом видео.
VK Team - это миллион возможностей проявить себя. Мы делаем современные и быстрые интернет-сервисы, доступные каждому. На этом канале делимся опытом компании VK, рассказываем о технологиях, наших образовательных проектах и жизни команды.
😎 Сообщество ВКонтакте: vkteam
👨🎓 VK Education: education.vk.c...
🏆 Чемпионаты: cups.online/
👨💻 Карьера в VK: team.vk.company/
#программирование #юникод
Вышеуказанный код для строк, состоящих из одних и тех же символов, например "aaaaaa", возвращает пустую строку. Я думаю, что это частный случай решаемой задачи. Поэтому решил прикрепить вариант с обработкой этого частного случая.
def huff(d):
nodes = [Node(k, v) for k, v in d.items()]
if len(nodes) == 1:
return {nodes[0].k: "0"}
heapq.heapify(nodes)
while len(nodes) > 1:
right = heapq.heappop(nodes)
left = heapq.heappop(nodes)
heapq.heappush(nodes, Node('', right.v + left.v, left, right))
return to_codes(nodes[0])