Строка символов архивируется так: количествосимволколичествосимвол...
Выведите заархивированную строку, содержащую наименьше число таких групп.
На вход подается единственная строка (), состоящая только из строчных латинских символов.
Выведите в единственной строке результат архивации.
aaabbbbbbbbbbbbdccc
3a12b1d3c
aaabbbbacaa
3a4b1a1c2a
aaabbbccc
3a3b3c
Дана строка - результат работы архиватора из прошлой задачи. Разархивируйте ее.
На вход подается единственная строка (), состоящая только из строчных латинских символов.
Выведите в единственной строке результат архивации. Гарантируется, что размер ответа не превосходит
3a12b1d3c
aaabbbbbbbbbbbbdccc
3a4b1a1c2a
aaabbbbacaa
3a3b3c
aaabbbccc
Строка символов кодируется так: числосимволчислосимвол
Каждое число должно иметь размер 1 байт, то есть состоять не более, чем из 8 бит. Число говорит сколько раз надо повторить следующий за ним символ. Таким образом мы можем закодировать длины повторений (последовательностей) от 1 до 256 (число 0 соответствует 1 повторению, 1 - двум и так далее, 255 - 256 повторениям). Любую группу из одинаковых символов обязательно сжимать используя повторения. Если группа состоит из более, чем 256 символов, она бьется на несколько групп длиной 256 и последней группы, которая может иметь длину меньше 256.
Выведите строку после архивации.
На вход подается единственная строка (), состоящая только из заглавных латинских символов и цифр. Каждая пара символов кодирует один байт - пара символов это число в 16-ричной системе системе счисления
Выведите в единственной строке результат архивации.
616161626262636363
026102620263
61616262
01610162
61616162626262626262626262626264636363
02610B6200640263
Дана строка - результат работы архиватора из прошлой задачи. Разархивируйте ее.
На вход подается единственная строка (), состоящая только из строчных латинских символов.
Выведите в единственной строке результат архивации. Гарантируется, что размер ответа не превосходит
026102620263
616161626262636363
01610162
61616262
02610B6200640263
61616162626262626262626262626264636363
Строка символов кодируется так: числосимволчислосимвол
Каждое число должно иметь размер 1 байт, то есть, состоять не более, чем из 8 бит. Пусть - старший бит числа, а - число, состоящее из 7 младших бит. Тогда если , то дальше будет идти последовательность из символа, которую надо повторить 1 раз, иначе далее будет идти один символ, который надо повторить раз. Таким образом мы можем закодировать длины повторений (или последовательностей) от 1 до 128. Строку надо сжать так, чтобы ее длина после архивации была наименьшей возможной.
Дана строка ().
Выведите строку после архивации.
616161626262636363
026102620263
61616262
01610162
61616162626262626262626262626264636363
02610B6280640263
Дана строка - результат работы архиватора из прошлой задачи. Разархивируйте ее.
Дана строка ().
Выведите строку после разархивации.
026102620263
616161626262636363
Сделайте то же, что в задаче Е, только с файлами.
Получите архивированный файл.
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
#A
Нельзя читать весь файл в память сразу.
Дан файл - результат работы архиватора из задачи G. Разархивируйте его.
Получите разархивированный файл.
Нельзя читать весь файл в память сразу.
Битовую последовательность можно кодировать способом RLE так: количество единиц, количество нулей, количество единиц, количество нулей... Такое кодирование очень хорошо подходит, например, для сжатия монохромных изображений, в которых каждый пиксель кодируется всего одним битом. В этом случае обычно возникают длинные последовательности подряд идущих нулей и подряд идущих единиц.
Для того, чтобы кодирование было эффективным и было возможно легко раскодировать длины последовательностей кодируются фиксированным количеством бит . В случае, если ntreofz последовательность длиннее , добавляют нули, например, при кодировании последовательности 00001000 числами длиной два бита (в этом случае можно закодировать длины 0, 1, 2 и 3) код будет таким: 0 3 0 1 1 3, или в двоичной записи 00 11 00 01 01 11. (Да, на таком коротком примере файл раздувается.)
Закодируйте файл. В начало файла запишите в четырех битах. Это позволит кодировать длины последовательностей от до . Таким образом, ответ для 00001000 при будет таким: 0010 00 11 00 01 11 01
Дан файл. Число определяется как остаток от длины файла при делении на 10 плюс 2.
Закодируйте файл в требуемом формате.
в задании из примера в условии получается 3 (1 % 10 + 2)
Полностью ответ получается таким:
0011 000 100 001 011 (0 4 1 3) 0000
Таким образом В 16-м виде (проверяйте, например, в hexed.it или другом hex-редакторе)
из 08 получается 03 10 B0
C
0L@
Для решения задачи напишите классы для чтения одного бита из потока ввода и записи одного бита в поток вывода, а так же запись числа при помощи бит.
Раскодируйте файл, закодированный по алгоритму предыдущей задачи.
Для решения задачи добавьте в класс битового потока ввода чтения числа из следующих бит.