Юникод, префиксные коды, код Хаффмана | Скринкасты

Поділитися
Вставка
  • Опубліковано 17 жов 2024
  • В этом выпуске Вадим (руководитель группы разработки бэкенда Маруси) расскажет, что такое юникод, как устроены его кодировки, и какая математика лежит в основе этого всего. При чем тут префиксные коды, код Хаффмана, и как это реализовать на Python.
    Юникод - это кодировка? А что тогда такое UTF8? Какие коды называются префиксными? Как работают кодировки переменной длины? Как лучше кодировать символы, которые встречаются в тексте с разной частотой? Как построить очередь с приоритетами, и при чем тут куча? Ответы - в этом видео.
    VK Team - это миллион возможностей проявить себя. Мы делаем современные и быстрые интернет-сервисы, доступные каждому. На этом канале делимся опытом компании VK, рассказываем о технологиях, наших образовательных проектах и жизни команды.
    😎 Сообщество ВКонтакте: vkteam
    👨‍🎓 VK Education: education.vk.c...
    🏆 Чемпионаты: cups.online/
    👨‍💻 Карьера в VK: team.vk.company/
    #программирование #юникод

КОМЕНТАРІ • 1

  • @justgalym
    @justgalym Рік тому

    Вышеуказанный код для строк, состоящих из одних и тех же символов, например "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])