Илья составляет слова перестановкой букв в слове ЕДИНОБОРСТВА. Сколько слов, в середине (то есть не начинается с первой позиции и не заканчивается последней) которых находится слово НОСБ, а в начале стоит гласная буква, может составить Илья?
Решение руками
Рассмотрим различные расположения слова НОСБ: *НОСБ*******, **НОСБ******, ***НОСБ*****, ****НОСБ****, *****НОСБ***, ******НОСБ**, *******НОСБ*. Так как на первой позиции может стоять только гласная, а одна буква О находится в слове НОСБ, то всего букв на первой позиции может стоять 4.
Тогда, например, для *НОСБ******* всего слов будет: . Так как всего вариантов перестановок может быть 7, то умножаем это число на 7:
. Так как в слове встречается две буквы О, то чтобы исключить повторения, нужно еще разделить это число на 2:
Решение через циклы
#Исключаем НОСБ из слова, считая, по умолчанию, что оно находится в середине слова. Всего 7 вариантов, где НОСБ не находится по краям слова, по этой причине окончательный ответ нужно умножить на 7
a = ’ЕДИОРТВА’
count = set()
for x1 in ’ЕИОА’:
for x2 in a:
for x3 in a:
for x4 in a:
for x5 in a:
for x6 in a:
for x7 in a:
for x8 in a:
s = x1+x2+x3+x4+x5+x6+x7+x8
if len(set(s)) == len(s):
count.add(s)
print(len(count)*7)
Решение через itertools
from itertools import permutations
count = set()
#Исключаем НОСБ из слова, считая, по умолчанию, что оно находится в середине слова. Всего 7 вариантов, где НОСБ не находится по краям слова, по этой причине окончательный ответ нужно умножить на 7
for x in permutations(’ЕДИОРТВА’):
s = ’’.join(x)
if s[0] in ’ЕИОА’:
count.add(s)
print(len(count)*7)