var k1,k2,k3,k4,k:integer;
begin
writeln('Перед вами программа, которая умеет вычислять количество информации');
writeln('по выбранному наугад шарику из мешка.');
writeln('Введите число шаров белого цвета:');
readln(k1);
writeln('Введите число шаров чёрного цвета:');
readln(k2);
writeln('Введите число шаров синего цвета:');
readln(k3);
writeln('Введите число шаров красного цвета:');
readln(k4);
k:=k1+k2+k3+k4;
if k1<>0 then
writeln('Во фразе «Выпал белый шар» содержится ',log2(k/k1):4:1,' бит(а) информации');
if k2<>0 then
writeln('Во фразе «Выпал чёрный шар» содержится ',log2(k/k2):4:1,' бит(а) информации');
if k3<>0 then
writeln('Во фразе «Выпал синий шар» содержится ',log2(k/k3):4:1,' бит(а) информации');
if k4<>0 then
writeln('Во фразе «Выпал красный шар» содержится ',log2(k/k4):4:1,' бит(а) информации');
end.
Пример:
Перед вами программа, которая умеет вычислять количество информации
по выбранному наугад шарику из мешка.
Введите число шаров белого цвета:
100
Введите число шаров чёрного цвета:
0
Введите число шаров синего цвета:
200
Введите число шаров красного цвета:
100
Во фразе «Выпал белый шар» содержится 2.0 бит(а) информации
Во фразе «Выпал синий шар» содержится 1.0 бит(а) информации
Во фразе «Выпал красный шар» содержится 2.0 бит(а) информации
Понятно, что 90 = Р и 93 = С - все четыре слова заканчиваются на эти буквы. Теперь смотрим: есть два слова, начинающиеся на одну букву: МАРС и МОРС. Ищем среди последовательностей две, которые тоже начинаются на одинаковый код. Это 80 84 90 93 и 80 05 90 93. Значит, 80 = М
Теперь ищем последовательности для МАРС и БАРС - у них совпадает вторая буква. Это 80 05 90 93 и 10 05 90 93, откуда имеем 05 = А и 10 = Б, а код 84 = О
Оставшаяся последовательность 87 62 90 93 для слова ПИРС даёт нам буквы 87 = П и 62 = И
Таким образом, СИРОП кодируется так:
93 62 90 84 87