C/C++

НУЖНА ПОМОЩЬ ОЛИМПИАДА ПО ИНФОРМАТИКЕ!!!!

В таблице представлены шесть букв русского алфавита и двоичные коды, которые для них задал компьютер. Для некоторых букв — 2 бита, для некоторых — 3.
п - 01 с - 10 и - 00 р - 11 к - 001 т - 100
Код некорректен: 00100 - это "ит" или "ки"?
Если же надо подсчитать кол-во возможных комбинаций, то это делается примитивным перебором, который любой учащийся, сунувшийся на олимпиаду, обязан уметь делать сам.

Ах да, текст вопроса всё же появился. Если немного подумать, то и перебор не требуется:
 def check(s):
if len(s) % 2 == 0 or s[:3] in ['100', '001']: return true
if len(s) < 3: return false
return check(s[2:])
Если же надо получить список всех возможных слов, то:
 def lst(s):
if len(s) < 2: return []
tbl = {'00': 'и', '01': 'п', '10': 'с', '11': 'р', '001': 'к', '100': 'т'}
if s in tbl: return [tbl[s]]
res = []
for v in lst(s[2:]): res.append(tbl[s[:2]] + v)
if len(s) >= 5:
for v in lst(s[3:]): res.append(tbl[s[:3]] + v)
return res
Александр Волков
Александр Волков
81 035
Лучший ответ
Михаил Кошелев в этом вся проблема! непонятно какую букву надо ставить, ибо Вы сами понимете
Для решения этой задачи необходимо перебрать все возможные варианты разбиения данного двоичного кода на группы битов длины 2 и 3 и попытаться расшифровать каждый вариант.

Начнем с разбиения на три группы:

111 000 100 101 0
100 101 010 100 01
100 011 100 011 00

Попробуем расшифровать каждую группу:

111 - это буква "р" (код 11)
000 - это буква "и" (код 00)
100 - это буква "т" (код 100)
101 - это буква "к" (код 001)
0 - это буква "п" (код 01)

100 - это буква "с" (код 10)
101 - это буква "к" (код 001)
010 - это буква "е" (код 00)
100 - это буква "т" (код 100)
01 - это буква "с" (код 10)

100 - это буква "т" (код 100)
011 - это буква "о" (код 11)
100 - это буква "т" (код 100)
011 - это буква "о" (код 11)
00 - это буква "и" (код 00)

Таким образом, мы получили три слова: "приткс", "сектс" и "тотои". Однако ни одно из них не является осмысленным словом на русском языке.

Теперь рассмотрим разбиение на две группы:

11100 01001 01010 001
01001 01010 10001
10001 11000 1100

Попробуем расшифровать каждую группу:

11100 - это буква "р" (код 11)
01001 - это буква "с" (код 10)
01010 - это буква "к" (код 001)
001 - это буква "и" (код 00)

01001 - это буква "с" (код 10)
01010 - это буква "к" (код 001)
10001 - это буква "е" (код 00)
1 - это буква "г" (код 1)

10001 - это буква "е" (код 00)
11000 - это буква "н" (код 01)
1100 - это буква "а" (код 00)

Таким образом, мы получили слово "скайгена", которое может быть осмысленным словом на русском языке. Однако, это зависит от контекста и необходимо дополнительное подтверждение.
10001110001100 слово: "скрипт"