Помогите написать алгоритм, который бы исключал в тексте два одинаковых подряд идуших байта, при этом не увеличивал файл или увеличивал по самому минемуму.
Вот то что мне предложили на компрессион:
извиняюсь, криво скопировалось, после % не 6, а 256
Может быть можно как-то исправить чтобы не выдовал два подряд идуших символа или свой придумайте, предлогайте
Здравствуйте, sinys5, Вы писали:
S>Помогите написать алгоритм, который бы исключал в тексте два одинаковых подряд идуших байта, при этом не увеличивал файл или увеличивал по самому минемуму.
Ну очевидно, что такого алгоритма, который не увеличивал бы файл, не существует. Хотя бы потому, что произвольных файлов размера <= N больше, чем файлов размера <= N, в которых нет двух подряд идущих байт.
Здравствуйте, Vintik_69, Вы писали:
V_>Здравствуйте, sinys5, Вы писали:
S>>Помогите написать алгоритм, который бы исключал в тексте два одинаковых подряд идуших байта, при этом не увеличивал файл или увеличивал по самому минемуму.
V_>Ну очевидно, что такого алгоритма, который не увеличивал бы файл, не существует. Хотя бы потому, что произвольных файлов размера <= N больше, чем файлов размера <= N, в которых нет двух подряд идущих байт.
Изобретать велосипед не стоит, такой алгоритм используется в графическом формате PCX, очень рекомендую ознакомиться, там все "дешего и сердито" и довольно эфективно для такого простенького алгоритма.
IMHO все зависит от данных, которые которые автор вопроса хочет сжимать. Думаю, что для текста данный алгоримт не эфективен.
Могу предложить гарантированный способ увеличения текста максимум на 1 символ: ставить обин байт признака проводилось сжатие или нет, если алгоритм не смог сжать, то признак без сжатия, если удалось уменьшить размер, то ставим признак.