В качестве примера равномерного кода можно назвать ASCII-таблицу, где каждому из 256 символов сопоставлено двоичное значение от 00000000 до 11111111. Независимо от вероятности появления символа на его представление отводится 1 байт, или 8 бит. Как известно, национальные языки обладают большой избыточностью, то есть разницей между энтропией источника и максимально возможной энтропией, обусловленной равной вероятностью появления любого символа из алфавита. Например, избыточность русского языка составляет 70%, а английского – 50%. Это в частности означает, что некоторые буквы появляются в тексте гораздо чаще других и поэтому использовать равномерное кодирование нерационально. При неравномерном кодировании часто встречающимся символам сопоставляются более короткие кодовые последовательности, редко встречающимся – более длинные. За счет этого удается значительно сократить объем файла без потерь информации. Существует несколько методов неравномерного кодирования, важнейших из которых является метод Шеннона-Фано. как-то так
В подавляющем большинстве языков программирования существуют функции для: 1. Поиск подстроки в строке, возвращает порядковый номер первого символа подстроки в строке 2. Определение длины строки 3. Выбор части строки по заданным порядковым номерам символов 4. Конкатенация (объединение) строк Нажав клавишу F1 в среде разработки, или просто порывшись в тетрадке/учебнике/книжке/пособии можно без труда найти все эти функции, и затем всего-навсего применяем строгую логику, для успешного решения вполне сойдёт на уровне рассуждений гиббона или орангутана Впрочем, "благодаря" реформам Фурсенко, не у всех школьников ныне достижим даже уровень мышления мартышек.
При неравномерном кодировании часто встречающимся символам сопоставляются более короткие кодовые последовательности, редко встречающимся – более длинные. За счет этого удается значительно сократить объем файла без потерь информации. Существует несколько методов неравномерного кодирования, важнейших из которых является метод Шеннона-Фано.
как-то так