По каналу связи передаются сообщения, содержащие четыре буквы: А, Б, В, Г. Для передачи используется неравномерный двоичный код, допускающий однозначное кодирование. Для букв А, Б, В используются такие кодовые слова: А: 0, Б: 101, В: 110.
Укажите кратчайшее кодовое слово для буквы Г, при котором код будет допускать однозначное декодирование. Если таких кодов несколько, укажите код с наименьшим числовым значением.
По каналу связи передаются сообщения, содержащие только 4 буквы: А, Т, О, М; для передачи используется двоичный код, допускающий однозначное декодирование. Для букв Т, О, М используются такие кодовые слова:
Т - 100, О - 0, М - 11.
Укажите такое кодовое слово для буквы А, при котором код будет допускать однозначное декодирование. Если таких кодов несколько, укажите тот, у которого меньшая длина.
Выберите один ответ.
01
101
1
0
Для кодирования некоторой последовательности, состоящей из букв А, Б, В, Г и Д, используется неравномерный двоичный код, позволяющий однозначно декодировать полученную двоичную последовательность. Вот этот код:
А - 10, Б - 11, В - 0, Г - 001, Д - 011.
Можно ли сократить для одной из букв длину кодового слова так, чтобы код по-прежнему можно было декодировать однозначно? Коды остальных букв меняться не должны. Выберите правильный вариант ответа.
Выберите один ответ.
для буквы Г - 00
это невозможно
для буквы Б - 1
для буквы Д - 01
если на входе имеем строку, то привести к листу её можно с метода split(sep), где sep - символ, который программа считает за разделитель
input_list = input().split(',')
В нашей задаче нужно найти минимум, и сложить все индексы, под которыми этот минимум встречается. Для этого нужно привести последовательность к типу int. Можем воспользоваться либо функцией map, либо очень сильным питоньим колдунством (генераторы списков). Но всё таки воспользуемся более традиционным
input_list = list(map(int, input_list))
теперь все элементы нашего списка имеют тип int. Вытащим оттуда минимум:
our_min = min(input_list)
заведём переменную, куда будем складывать сумму индексов:
index_sum = 0
Самым очевидным для школьника сложить все индексы минимума будет перебрать весь массив и сравнивать элементы с нашим минимумом. Что бы не городить огороды, воспользуемся функцией enumerate, которая для нашего листа вернёт лист, состоящий из кортежей (индекс, элемент_под_этим_индексом)
for index, item in enumerate(input_list):
if item == our_min: index_sum += index
что произошло? Всё просто - если выбранный элемент является минимумом, то мы увеличиваем нашу переменную index_sum на значение индекса очередного встреченного минимума. Осталось дело за малым - выведем сумму индексов на экран
print(index_sum)
P.S - Из выделенных курсивом строчек кода можно склеить программу) Но на всякий случай, ниже всё же приложен скриншот.
8775 * 8 = 70200 бит занимает сообщение
70200 : 6 = 11700 символов в сообщении
найдем х - количество символов в строке
6 * 30 * х = 11700
180х = 11700
х = 65
ответ. в строке 65 символов.