Для кодирования некоторой последовательности, состоящей из букв Л, М, А, В, Б, решили использовать неравномерный двоичный код, удовлетворяющий условию,
что никакое кодовое слово не является началом другого кодового слова. Это условие
обеспечивает возможность однозначной расшифровки закодированных сообщений.
Известно, что в последовательности содержится 30 букв Л, 8 – М, 7 – А, 10 – В и
2 буквы Б.
Укажите наименьшую суммарную длину кодов всех 57 букв, содержащихся в
этом наборе символов.
DATA "ауоыэяюёие"
DATA "бвгджзклмнпрстфхцчшщ"
DATA "ъйь"
DIM s10 AS STRING, s20 AS STRING, s3 AS STRING
DIM i AS INTEGER
DIM s AS STRING, t AS STRING
CLS
READ s10, s20, s3
RANDOMIZE TIMER
INPUT "Введите фразу: ", s
t = ""
FOR i = 1 TO LEN(s)
t = t + MID$(s, i, 1)
t = t + MID$(s10, INT(10 * RND + 1), 1)
t = t + MID$(s20, INT(20 * RND + 1), 1)
t = t + MID$(s3, INT(3 * RND + 1), 1)
NEXT i
PRINT t
END
Программа дешифровки:
DIM s AS STRING, t AS STRING, i AS INTEGER
CLS
INPUT "Введите фразу: ", s
t = ""
FOR i = 1 TO LEN(s) STEP 4
t = t + MID$(s, i, 1)
NEXT i
PRINT t
END