|
56 / 43 / 27
Регистрация: 19.12.2013
Сообщений: 204
|
|||||||||||
Кодирование по частотности06.08.2025, 11:54. Показов 2943. Ответов 33
Метки нет (Все метки)
Не могу решить задачу, так не до конца понимаю её условие. Задача такая:
Вы работаете над системой управления контентом корпоративного портала: в нем хранится большое количество статей, новостей и других материалов для новичков. Для экономии места на сервере и увеличения скорости передачи данных было решено применять сжатие данных перед их сохранением. Вы выбрали такой метод хранения данных: текстовые данные будут переведены в двоичные. Более часто употребляемые буквы в тексте будут представлены короткими двоичными кодами, а редко встречающиеся буквы будут иметь более длинные коды. При этом регистр нужно игнорировать. Предположим, мы хотим закодировать последовательность «аааабвв». Сначала нам нужно вычислить частоту букв в тексте: а встречается 4 раза, 6 — 1 раз, в — 2 раза. Частота определяет двоичный код, кодирующий символ. Учитывая частотность букв в нашей последовательности, мы закодируем «а» с помощью «1», «б» с помощью «11», и «в» с помощью «10» в двоичной системе. Закодированная последовательность «аааабвв» будет выглядеть как 1111111010. Для удобства функция, создающая 34 последовательных двоичных числа, уже есть в прекоде. Этого количества достаточно для кодирования текста на русском языке с учетом пробела. Формат ввода Входные данные состоят из одной строки, содержащей произвольные буквы русского языка. В строке могут быть только буквенные символы и пробел. Пробел считается символом наравне с буквами. Формат вывода Выходные данные состоят из одной строки, содержащей двоичный код — в нем должна быть закодирована буквенная последовательность из ввода. Пример 1 Входные данные: аааабвв Выходные данные: 1111111010 Пример 2 Входные данные: Птицы поют утром Выходные данные: 1011000101000110010110100001111100011001 0000001010111001 Пример 3 Входные данные: Мальчик играет в футбол Выходные данные: 1101110010111011110001101001101010101111 00100011011000111011111100100001000111 Код предоставленный в исходных данных:
Мне кажется, что моя ошибка в сортировке словаря с символами, входящими в фразу. Также очень смущает наличие шести нулей подряд в примере № 2, так как для фразы "Птицы поют утром" у меня получилось 11 различных символов с кодами (1, 10, 11, 100, 101, 110, 111, 1000, 1001, 1010, 1011). Если у кого-то есть свободное время и желание решить задачку, прошу указать на мои ошибки. Спасибо!
0
|
|||||||||||
| 06.08.2025, 11:54 | |
|
Ответы с готовыми решениями:
33
Кодирование информации табличным способом. Кодирование строк unicode в байты utf-8 Кодирование текста |
|
5 / 3 / 2
Регистрация: 27.04.2022
Сообщений: 60
|
||
| 12.08.2025, 16:40 | ||
|
0
|
||
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
||||||
| 12.08.2025, 19:51 | ||||||
|
Третий пример получается если вообще ничего не сортировать =)
Очень вероятно, что просто совпадение(или нет).
Добавлено через 2 минуты Kloshar, пиши им в саппорт, пусть краснеют.
1
|
||||||
|
56 / 43 / 27
Регистрация: 19.12.2013
Сообщений: 204
|
||
| 12.08.2025, 22:16 [ТС] | ||
получается здесь просто используются первые 8 кодов по порядку, а дальше какая-то белиберда
0
|
||
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
||||||||||||||||||||||||||||||||||||||||||||||||
| 12.08.2025, 22:47 | ||||||||||||||||||||||||||||||||||||||||||||||||
|
Вот и в итоге, 2 пример абсолютно нереальный для 34буквенного алфавита. А 3 так вообще от другой задачи, вероятно. Потому что я не верю в совпадения) Добавлено через 8 минут Таблица что бы было видно :
0
|
||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||
| 13.08.2025, 00:06 | ||
|
Давно наблюдаю за темой, не вмешивался..
С задачей все нормально. Обратно в текст переводить не нужно. Необходимо закодировать входной текст в последовательность 1/0. Этот алгоритм будет проверяться на других спонтанных текстах. Добавлено через 7 минут Ничего обратно преобразовывать не надо. А "метод хранения" - это лишь фразеологизм из контекста задания.
0
|
||
|
|
||
| 13.08.2025, 00:30 | ||
|
Если портал позиционирует себя как "тест на пригодность работника", то задача должна быть максимально приближенной к реальным. "Хранить" данные в необратимом формате -- нонсенс. Даже более того, человек который НЕ задумается что из текущей таблицы нельзя распаковать обратно, как раз НЕ проходит. Понимание абсурдности задания тоже довольно важный критерий для работника. Если даже скинуть критерий с "задача на профпригодность" до "обучающая", то тут тоже довольно плохо. Можно придумать не один десяток вариантов, где нужно будет оперировать не кратным количеством битов, и при этом оставаться в рамках логики. Это позволит не тупить студенту над контекстом.
0
|
||
|
|
|
| 13.08.2025, 00:44 | |
|
Wolfdp, бесспорно. Только вот вряд ли эта задача конкретно на профпригодность. Это задание с каких-то курсов, причем, одновременно на сообразительность + логическое мышление.
P.S. я ее решил, проходит все тесты.
0
|
|
|
4694 / 2702 / 734
Регистрация: 02.08.2011
Сообщений: 7,234
|
|||||||||||||||||||||
| 13.08.2025, 00:53 | |||||||||||||||||||||
|
Хаффманом вот так вышло:
HuffmanTree
MinBinaryHeap
1
|
|||||||||||||||||||||
|
|
||
| 13.08.2025, 00:54 | ||
|
0
|
||
|
4694 / 2702 / 734
Регистрация: 02.08.2011
Сообщений: 7,234
|
||||||||||||
| 13.08.2025, 01:24 | ||||||||||||
|
Добавлено через 7 минут И там обратите внимание, кодовая табличка отсортирована по убыванию частот - для наглядности, частые символы - имеют меньшую длину, более редкие - бОльшую длину. Добавлено через 11 минут Эм, недостающий кусок кода:
Итого на фразу длиной 23 символа ушло бы 138 бит, а с Хаффманом ушло 93 бита. 45 бит сэкономили
0
|
||||||||||||
|
|
||||
| 13.08.2025, 02:29 | ||||
|
0
|
||||
|
|
|
| 13.08.2025, 02:47 | |
|
Wolfdp, не буду спорить, конечно, и что-то утверждать. Однако, "всем известный сайт", как говорит автор - совсем не всем известный, оказывается. И таких сайтов в наше время могло развестись довольно много.
Одно могу сказать точно - для оценки кандидата на ИТ-специальность, в конкретную контору - таких задач не дают. А если уже дают - то дело совсем плохо.
0
|
|
|
56 / 43 / 27
Регистрация: 19.12.2013
Сообщений: 204
|
|
| 13.08.2025, 10:13 [ТС] | |
|
IamRain, спасибо за решение методом Хаффмана! Самому было интересно попробовать, но познаний маловато. Потихоньку разберу как это делается
0
|
|
| 13.08.2025, 10:13 | |
|
Помогаю со студенческими работами здесь
34
Кодирование Виженером кирилических символов Кодирование по Хаффману ASCIIEncoding: Кодирование русских символов Кодирование и декодирование текста
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Рефакторинг программы уравнивания.
Massaraksh7 26.05.2026
Пример по предыдущей записи в блоге. Но, надо заметить, что, во-первых, там оптимизация не только математики, но и работы с базой данных, и с графами, а во-вторых, это ещё не всё.
|
Использование TThread в Lazarus для математических вычислений.
Massaraksh7 25.05.2026
Производя рефакторинг своих программ на предмет ускорения их работы, обратил внимание на такой аспект, как сокращение времени матвычислений. Дело в том, что приходится работать с большими матрицами. . .
|
Модель здравосохранения 18. Чем здоровее работник, тем быстрее выгорает
anaschu 24.05.2026
Имитационная модель корпоративного здравоохранения: что показывает математика
Сегодня в модели рабочего коллектива на AnyLogic появились три новые механики — выгорание через накопленную усталость,. . .
|
Модель здравосохранения 17. Планы на выгорание
anaschu 23.05.2026
Вот конкретная схема реализации:
В классе Работник добавить:
накопленнаяУсталость — растёт каждый час работы, снижается в перерывы и болезни
коэффициентПрезентеизма — снижает продуктивность. . .
|
|
Изменение цветов в палитре gif файла aka фавикона
russiannick 23.05.2026
Изменение цветов в палитре gif файла, юзаемого как фавиконка в составе html-файла, помещенная в base64, средствами нативного Java Script, навеянное сном в майский день.
Для работы необходим браузер,. . .
|
Модель здравосохранения 16. Слишком хорошие и здоровые сотрудники уходят, недовольные зарплатой
anaschu 23.05.2026
Отладка увольнений и настройка производительности
Сегодня во второй половине дня разобрались с механикой увольнений и настроили коэффициент сложности заданий. Вот что было сделано.
. . .
|
Как я стал коммунистом))) Модель сохранения здоровья сотрудников, запись блога номер 15
anaschu 23.05.2026
Внезапно хорошее здоровье сотрудников не нужно капиталистам?))
|
Модель здравоСохранения 15. Как мы чинили AnyLogic модель рабочего коллектива: сочленение диаграммы состояний болезней и поломок в ресурспул
anaschu 23.05.2026
Как мы чинили AnyLogic модель рабочего коллектива
Сегодня разобрались с пятью багами, из-за которых модель либо падала с ошибкой, либо давала совершенно бессмысленные результаты. Каждый баг был. . .
|