Виктор составляет 4-буквенные коды из букв В, И, К, Т, О, Р. Каждую букву можно использовать не более одного раза, при этом нельзя ставить рядом две гласные и две согласные. Сколько различных кодов может составить Виктор?
Заметим, что поскольку гласных букв две, а согласных четыре, слово может начинаться с как с согласной, так и с гласной. Также учтём то, что каждую букву нужно использовать не более одного раза.
Поставим на первое место любую из четырёх согласных. На второе — любую из двух гласных. На третье — любую из трёх оставшихся согласных. На четвертое — оставшуюся гласную. По правилу произведения, соответствующие количества способов перемножаем. Учитывая, что на первое место можно поставить как согласную, так и гласную, Виктор может составить
Ответ: 48.
Приведём другое решение на языке Python.
import itertools
alphabet = "ВИКТОР"
vol = "ИО"
con = "ВКТР"
ar = itertools.permutations(alphabet, 4) #Размещение
arl = []
for e in ar:
arl.append(list(e))
count = 0
for e in arl:
flag = True
for i in range(len(e)-1):
if (e[i] in vol and e[i+1] in vol) or (e[i] in con and e[i+1] in con):
flag = False
if flag:
count += 1
print(count)
Приведём решение Сергея Донец на языке PascalABC.NET.
begin
'В, И, К, Т, О, Р'.Remove(', ').Permutations(4)
.where(s->'ИО'.Permutations(2).all(d->d not in s))//нельзя две гласные рядом
.where(s->'ВКТР'.Permutations(2).all(d->d not in s))//нельзя две согласные рядом
.Count.Print;
end.

