Перебор слов и системы счисления.Подсчет количества слов с ограничениями
i
Тимофей составляет 5-буквенные коды из букв Т, И, М, О, Ф, Е, Й. Буква Й может использоваться в коде не более одного раза, при этом она не может стоять на первом месте, на последнем месте и рядом с буквой И. Все остальные буквы могут встречаться произвольное количество раз или не встречаться совсем. Сколько различных кодов может составить Тимофей?
Решение. Заметим, что буква Й может встречаться в слове один раз или не встречаться совсем. Рассмотрим два случая.
Пусть буква Й стоит на втором месте. Тогда, поскольку на соседних позициях не может стоять буква И, количество возможных слов равно 5 · 1 · 5 · 6 · 6. Также буква Й может стоять на третьем и четвёртом месте. Значит, всего слов, в которых используется буква Й, 5 · 1 · 5 · 6 · 6 · 3 = 2700.
Если буква Й не используется, количество возможных слов равно 6 · 6 · 6 · 6 · 6 = 7776.
Таким образом, всего возможных слов 2700 + 7776 = 10476.
Ответ: 10476.
Приведём другое решение на языке Python.
import itertools
alphabet = "ТИМОФЕЙ"
ar = itertools.product(alphabet, repeat=5) #Размещение с повторениями
arl = []
for i in ar:
arl.append(list(i))
count = 0
for e in arl:
flag = True
for i in range(len(e) - 1):
if e.count('Й') > 1 or e[0] == 'Й' or e[-1] == 'Й' or (e[i] == 'Й' and e[i + 1] == 'И') or (e[i + 1] == 'Й' and e[i] == 'И'):
flag = False
if flag == True: count += 1
print(count)
Приведём решение Бориса Савельева на языке Python.
from itertools import product
s=product('ТИМОФЕЙ', repeat =5)
k=0
for i in s:
p=''.join(i)
if p.count('Й')<=1 and p[0]!='Й' and p[-1]!='Й' and p.count('ИЙ')==0 and p.count('ЙИ')==0: