По каналу связи передаются сообщения, содержащие четыре буквы: А, Б, В, Г. Для передачи используется неравномерный двоичный код, допускающий однозначное кодирование. Для букв А, Б, В используются такие кодовые слова: А: 0, Б: 101, В: 110.
Укажите кратчайшее кодовое слово для буквы Г, при котором код будет допускать однозначное декодирование. Если таких кодов несколько, укажите код с наименьшим числовым значением.
По каналу связи передаются сообщения, содержащие только 4 буквы: А, Т, О, М; для передачи используется двоичный код, допускающий однозначное декодирование. Для букв Т, О, М используются такие кодовые слова:
Т - 100, О - 0, М - 11.
Укажите такое кодовое слово для буквы А, при котором код будет допускать однозначное декодирование. Если таких кодов несколько, укажите тот, у которого меньшая длина.
Выберите один ответ.
01
101
1
0
Для кодирования некоторой последовательности, состоящей из букв А, Б, В, Г и Д, используется неравномерный двоичный код, позволяющий однозначно декодировать полученную двоичную последовательность. Вот этот код:
А - 10, Б - 11, В - 0, Г - 001, Д - 011.
Можно ли сократить для одной из букв длину кодового слова так, чтобы код по-прежнему можно было декодировать однозначно? Коды остальных букв меняться не должны. Выберите правильный вариант ответа.
Выберите один ответ.
для буквы Г - 00
это невозможно
для буквы Б - 1
для буквы Д - 01
===== PascalABC.NET =====
begin
var СписокСлов := ReadlnString('Список слов через пробел:').ToWords;
var ИсходныйСловарь := new Dictionary<char, integer>;
var РабочийСловарь := new Dictionary<char, integer>;
foreach var Символ in ReadlnString('Слово:') do
ИсходныйСловарь[Символ] := ИсходныйСловарь.Get(Символ) + 1;
var СтрокаВывода: string;
foreach var Слово in СписокСлов do
begin
foreach var Символ in Слово do
РабочийСловарь[Символ] := РабочийСловарь.Get(Символ) + 1;
var МожноПостроитьСлово := True;
foreach var ЭлементРабочегоСловаря in РабочийСловарь do
begin
var Ключ := ЭлементРабочегоСловаря.Key;
var ПределПовторовБуквы: integer;
if ИсходныйСловарь.TryGetValue(Ключ, ПределПовторовБуквы) then
begin
if ЭлементРабочегоСловаря.Value > ПределПовторовБуквы then
begin
МожноПостроитьСлово := False;
break
end
end
else
begin
МожноПостроитьСлово := False;
break
end
end;
if МожноПостроитьСлово then
begin
if СтрокаВывода <> '' then
СтрокаВывода += ', ';
СтрокаВывода += Слово
end;
РабочийСловарь.Clear;
end;
Println(СтрокаВывода)
end.
Пояснение:
Если ввод осуществляется через файл, то он должен называть "Слова.txt" и находиться в одной директории с исполняемым файлом. Выбрать нужный вариант ввода можно просто введя цифру в перовом input.
Код:
# -*- coding: utf-8 -*-
format = int(input("Считать слова из файла (введите 1)\nВводить слова в консоль (введите 2)\nВвести слова в одну строку(введите 3)\nВыбор: "))
words = []
answer = []
if format == 1:
f = open('Слова.txt', "r", encoding='utf-8')
line = f.readline()
while line:
for i in line.split(", "):
words.append(i)
line = f.readline()
f.close()
elif format == 2:
n = int(input("Введите кол-во слов - "))
for i in range(n):
words.append(input("Вв. слол - "))
elif format == 3:
n = input("Введите строку - ")
for i in n.split(", "):
words.append(i)
else:
print("Неправильно введен номер ответа")
word = input("Введите поисковое слово - ")
for i in words:
for j in list(word):
if len(set(word).intersection(set(i))) == len(i):
answer.append(i)
break
print(", ".join(answer))
Текст для документа:
рыба, рак, щука, лебедь, карась, пескарь, баня, бубен, столб, баян, барыня