Петя составляет 7-буквенные слова, содержащие в себе только заглавные буквы латинского алфавита, содержащиеся в восьменадцатиричной системе счисления. Сколько различных слов может составить Петя с учётом того, что все согласные буквы в слове различны и не могут стоять в начале, в середине и в конце слова?
Решение руками
Алфавит для составления слов включает в себя следующие буквы: A, B, C, D, E, F, G, H. Из них гласные – A, E; согласные – B, C, D, F, G, H.
На четыре доступных для согласных позиции можем расставить соответственно от нуля до четырех согласных. Причём если эти четыре позиции заняты не полностью гласными или не полностью согласными, нужно также домножать на количество возможных позиционных расстановок — сочетаний C из n по k:
Допустим, что в слове 0 согласных: .
Допустим, что в слове 1 согласная. Ее можно поставить на 4 позиции четыремя способами: .
Допустим, что в слове 2 согласные. Их можно поставить на 4 позиции способами:
.
Допустим, что в слове 3 согласные. Их можно поставить на 4 позиций способами:
.
Допустим, что в слове 4 согласные: .
Для конечного ответа сложим все получившиеся результаты.
Решение через циклы
a = ’ABCDEFGH’
sogl = ’BCDFGH’ # согласные буквы слова
gl = ’AE’ # гласные буквы слова
count = set()
for x1 in gl:
for x2 in a:
for x3 in a:
for x4 in gl:
for x5 in a:
for x6 in a:
for x7 in gl:
s = x1+x2+x3+x4+x5+x6+x7
# список, в котором хранятся все согласные буквы текущего слова
m = [i for i in s if i in sogl]
# если все согласные буквы в слове - различные
if len(m) == len(set(m)):
count.add(s)
print(len(count))
Решение через itertools
from itertools import product
count = set()
sogl = ’BCDFGH’
for x in product(’ABCDEFGH’,repeat = 7):
s = ’’.join(x)
if s[0] in ’AE’ and s[3] in ’AE’ and s[-1] in ’AE’:
# список, в котором хранятся все согласные буквы текущего слова
m = [i for i in s if i in sogl]
# если все согласные буквы в слове - различные
if len(m) == len(set(m)):
count.add(s)
print(len(count))