Дарья составляет 6-буквенные слова перестановкой букв слова ВЕРСИЯ. При этом в слове не могут стоять рядом две согласные буквы, а буква Я не может стоять на втором или четвертом месте. Словом считается любая допустимая последовательность букв, не обязательно осмысленная. Сколько слов может составить Дарья?
Решение руками
У нас в распоряжении 3 гласные и 3 согласные буквы. Для начала составим варианты расстановки согласных букв так, чтобы они не стояли рядом:
1) С*С*С*
2) С*С**С
3) С**С*С
4) *С*С*С
На место согласной буквы можно поставить любую из 3, потом любую из 2, и наконец 1 оставшуются. Тогда расставить можно вариантов согласных букв.
Теперь проанализируем гласные буквы, которые должны стоять на местах звёздочки.
В первом варианте буква Я не может стоять на 2 местах, а значит стоит на последнем. Тогда на двух оставшихся местах будет варианта расстановки гласных. Тогда общее количество слов в первом варианте равно
.
Во втором варианте буква Я также не может стоять на 2 местах, и стоит на предпоследнем. По аналогии, количество вариантов равно .
В третьем варианте буква Я не может стоять только на 2 месте, так что на 2 месте стоит одна из двух гласных, на третьем – одна из двух оставшихся и на пятом – оставшаяся гласная. Тогда общее количество вариантов расстановки гласных равно , откуда общее количество вариантов равно
.
И наконец, для 4 варианта буква Я может стоять на любой месте. Тогда расставить можно вариантов гласных букв. В итоге для 4 варианта будет
способов расстановки.
Просуммировав все варианты, получим , после чего запишем ответ.
Решение через циклы
a = ’ВЕРСИЯ’
a1 = ’ВЕРСИ’
sogl = ’ВРС’ # согласные буквы слова
m = [x1+x2 for x1 in sogl for x2 in sogl] # пары согласных букв
count = set()
for x1 in a:
for x2 in a1:
for x3 in a:
for x4 in a1:
for x5 in a:
for x6 in a:
s = x1+x2+x3+x4+x5+x6
# проверка, что все буквы различные и при этом в слове нет рядом стоящих согласных букв
if len(set(s)) == len(s) and all(i not in s for i in m):
count.add(s)
print(len(count))
Решение через itertools
from itertools import permutations
count = 0
for x in permutations(’ВЕРСИЯ’):
s = ’’.join(x)
if s[1] != ’Я’ and s[3] != ’Я’ and (’ВР’ not in s) and (’РВ’ not in s) and (’ВС’ not in s) and (’СВ’ not in s) and (’СР’ not in s) and (’РС’ not in s):
count += 1
print(count)