Условие нехорошее: не совсем понятно, зачем запоминать количество неодинаковых букв (в данном случае это увеличивает ответ, хотя в общем случае может быть полезным), поразрядное кодирование тоже не к месту (какие могут быть разряды у строки? Тогда уж посимвольное). Возможно, и ответ просто неверный указан.
Можно исхитриться и получить ответ 6 байт. Считаем, последовательность неодинаковых букв тоже разбивается на серии по 16 элементов. Тогда в используемом алфавите 59 символов: 33 числа (-16..16) и 26 заглавных букв (по условию кодируются числа, а не цифры). 2^5 < 59 <= 2^6, поэтому каждый символ кодируется 6 битами.
Последовательность, разбитая на символы: -3 B C B 11 A 3 E — 8 символов, на их кодирование уйдёт 8 * 6 бит = 6 байт.
Другой вариант: в закодированной строке всегда стоит сначала число, потом соответствующее числу количество символов, потом опять число и так далее. Значит, числа и буквы можно кодировать независимо. путаницы не возникнет. На кодирование одного из 33 чисел нужно 6 бит, на кодирование одной из 26 букв — 5 бит. Они кодируются одинаковым числом битов, значит, каждое число или буква кодируются 6 битами. Дальше аналогично первому варианту.
Answers & Comments
Verified answer
Условие нехорошее: не совсем понятно, зачем запоминать количество неодинаковых букв (в данном случае это увеличивает ответ, хотя в общем случае может быть полезным), поразрядное кодирование тоже не к месту (какие могут быть разряды у строки? Тогда уж посимвольное). Возможно, и ответ просто неверный указан.Можно исхитриться и получить ответ 6 байт. Считаем, последовательность неодинаковых букв тоже разбивается на серии по 16 элементов. Тогда в используемом алфавите 59 символов: 33 числа (-16..16) и 26 заглавных букв (по условию кодируются числа, а не цифры). 2^5 < 59 <= 2^6, поэтому каждый символ кодируется 6 битами.
Последовательность, разбитая на символы:
-3 B C B 11 A 3 E — 8 символов, на их кодирование уйдёт 8 * 6 бит = 6 байт.
Другой вариант: в закодированной строке всегда стоит сначала число, потом соответствующее числу количество символов, потом опять число и так далее. Значит, числа и буквы можно кодировать независимо. путаницы не возникнет.
На кодирование одного из 33 чисел нужно 6 бит, на кодирование одной из 26 букв — 5 бит. Они кодируются одинаковым числом битов, значит, каждое число или буква кодируются 6 битами. Дальше аналогично первому варианту.