1 of 13

from itertools import * # from itertools import product

z="123"

L1 = list (product (z, repeat=2)) #декартово произведение

#(все возможные слова заданной длины, составленные из данного алфавита)

print(1,*L1)

#1 ('1', '1') ('1', '2') ('1', '3') ('2', '1') ('2', '2') ('2', '3') ('3', '1') ('3', '2') ('3', '3')

L2 = list (permutations (z, 2)) #перестановки

# если длина не указана, она равна исходной

print(2,*L2)

#2 ('1', '2') ('1', '3') ('2', '1') ('2', '3') ('3', '1') ('3', '2')

L3 = list (combinations (z, 2)) #комбинации без повторов

print(3,*L3)

#3 ('1', '2') ('1', '3') ('2', '3')

L1, L2 , L3 – списки кортежей

2 of 13

from itertools import product

p = product('ШКОЛА', repeat=3)

n = 0

for x in p:

if x.count('К') == 1:

n += 1

print(n)

Задание 8.

Игорь составляет таблицу кодовых слов для передачи сообщений, каждому сообщению соответствует своё кодовое слово. В качестве кодовых слов Игорь использует трёхбуквенные слова, в которых могут быть только буквы Ш, К, О, Л, А, причём буква К появляется ровно 1 раз. Каждая из других допустимых букв может встречаться в кодовом слове любое количество раз или не встречаться совсем. Сколько различных кодовых слов может использовать Игорь?

p=[x for x in product('ШКОЛА',repeat=3) if x.count('К')==1 ]

print(len(p))

3 of 13

Маша составляет шестибуквенные слова перестановкой букв слова КАПКАН. При этом она избегает слов с двумя подряд одинаковыми буквами. Сколько различных кодов может составить Маша?

6! = 720

720/4 = 180 (перестановки А с А, К с К не дают новых слов)

Слова с АА=х КПКНх 5!/2 = 60

Слова с КК=х АПНАх 5!/2 = 60

Слова с АА и КК ПНхt 4! = 24

Всего = 180 – 60 – 60 + 24 = 84

4 of 13

def ok(x):

for i in range(5):

if x[i]==x[i+1]: # соседние буквы одинаковые

return False

else:

return True

 

from itertools import permutations

s = 'капкан'

# множество удаляет повторяющиеся перестановки

# (из-за двух 'а' и двух 'к' в s)

m = { x for x in permutations(s) if ok(x) }

print(len(m))

5 of 13

from itertools import permutations

words = set()

s = 'капкан'

for p in permutations(s):    

w = ''.join(p)    

if w.count('аа') == 0 and w.count('кк') == 0:      

words.add(w)

print(len(words))

6 of 13

m = 0

p = 0

for x in range(2,7):

n = 0

word = product('АИЯ',repeat=x) # i - кол-во символов в слове

for lett in word:

if lett.count('И') <3 and lett.count('А') <3 and lett.count('Я') <3:

n += 1 #кол-во слов, где каждая гласная встречается не более двух раз

if x!=2:

p +=n # кол-во слов длиной более двух символов без согласных

m+=n*2 # кол-во слов длиной > двух символов с согласной в начале слова

print(m+p)

Задание 8. Вариант 1

Лида составляет слова из букв Д, А, Н, И, Я. Каждая гласная буква встречается в слове не более двух раз. Каждая согласная может стоять в слове на первой позиции, либо не встречаться вовсе. Сколько слов длиною более двух символов может составить Лида?

7 of 13

Маша составляет 5-буквенные коды из букв В, У, А, Л, Ь. Каждую букву нужно использовать ровно 1 раз, при этом буква Ь не может стоять на первом месте и перед гласной. Сколько различных кодов может составить Маша?

from itertools import permutations

n = 0

for x in permutations('ВУАЛЬ'):

s = ''.join(x)

if s[0] != 'Ь' and 'ЬУ' not in s and 'ЬА' not in s:

n += 1

print(n)

8 of 13

n=0

s='вуаль'

for a in s[:4]: # s без 'ь'

for b in s:

for c in s:

for d in s:

for e in s:

st=a+b+c+d+e # полученный 5-буквенный код

for x in s:

if st.count(x)!=1:

break

else: # все символы встретились ровно один раз

if st.count('ьу')==0 and st.count('ьа')==0:

n+=1

print(n)

9 of 13

Проверь себя.)

Вася составляет 3-буквенные слова, в которых есть только буквы М, Е, Т, Л , А, причём буква А используется в каждом слове хотя бы 1 раз. Каждая из других допустимых букв может встречаться в слове любое количество раз или не встречаться совсем. Словом считается любая допустимая последовательность букв, не обязательно осмысленная. Сколько существует таких слов, которые может написать Вася?

10 of 13

Вася составляет 3-буквенные слова, в которых есть только буквы М, Е, Т, Л , А, причём буква А используется в каждом слове хотя бы 1 раз. Каждая из других допустимых букв может встречаться в слове любое количество раз или не встречаться совсем. Словом считается любая допустимая последовательность букв, не обязательно осмысленная. Сколько существует таких слов, которые может написать Вася?

from itertools import product

p = product(‘МЕТЛА',repeat=3)

n = 0

for x in p:

if (x.count('А') >= 1):

n += 1

print(n)

11 of 13

Все четырехбуквенные слова, в составе которых могут быть только буквы П, Я, Т, Ь, Д, Н, Е, Й, записаны в алфавитном порядке и пронумерованы начиная с 1. Вот начало списка:

1. ДДДД

2. ДДДЕ

3. ДДДЙ

4. ДДДН

5. ДДДП

6. ДДДТ

7. ДДДЬ

8. ДДДЯ

9. ДДЕД

...

Под каким номером в списке стоит последнее слово, которое не содержит ни одной гласной и все буквы в нем различны?

12 of 13

from itertools import product

A = sorted("ПЯТЬДНЕЙ")

allWords = [ "".join(w) for w in product(A, repeat=4) ]

print(allWords.index('ЬТПН')+1)

# ind = [ i+1 for i, w in enumerate(allWords)

# if w.count('Е') == 0 and w.count('Я') == 0 and

# len(set(w)) == len(w) ]

# print( max(ind) )

13 of 13

Петя составляет четырехбуквенные слова из символов КЕГЭ2023 и записывает их в алфавитном порядке в список. Считается, что цифры в используемом алфавите следуют за буквами. Вот начало списка:

1. ГГГГ

2. ГГГЕ

3. ГГГК

4. ГГГЭ

5. ГГГ0

6. ГГГ2

7. ГГГ3

8. ГГЕГ

...

Определите порядковый номер первого слова, которое начинается с цифры и не содержит двух подряд идущих одинаковых символов.