Андрей составляет 6-буквенные коды из букв А, Н, Д, Р, Е, Й.
Заметим, что
Пусть
Если
Таким образом, всего возможных слов 8000 + 15625 = 23625.
Ответ: 23625.
Приведём другое решение на языке Python.
import itertools
alphabet = "АНДРЕЙ"
ar = itertools.product(alphabet, repeat=6) #Размещение с повторениями
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)
Приведём решение Сергея Донец на языке PascalABC.NET.
begin
'А, Н, Д, Р, Е, Й'.Remove(', ')
.Cartesian(6)
.Where(s->s.CountOf('Й')<=1) // не более одного раза
.Where(s->not s.ismatch('ЙЕ|ЕЙ'))//не может стоять рядом с буквой Е
.Where(s->s[1]<>'Й') // не может стоять на первом месте
.Where(s->s[^1]<>'Й') // не может стоять на последнем месте
.Count.Print; // 23625
end.

