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 – списки кортежей
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))
Маша составляет шестибуквенные слова перестановкой букв слова КАПКАН. При этом она избегает слов с двумя подряд одинаковыми буквами. Сколько различных кодов может составить Маша?
6! = 720
720/4 = 180 (перестановки А с А, К с К не дают новых слов)
Слова с АА=х КПКНх 5!/2 = 60
Слова с КК=х АПНАх 5!/2 = 60
Слова с АА и КК ПНхt 4! = 24
Всего = 180 – 60 – 60 + 24 = 84
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))
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))
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
Лида составляет слова из букв Д, А, Н, И, Я. Каждая гласная буква встречается в слове не более двух раз. Каждая согласная может стоять в слове на первой позиции, либо не встречаться вовсе. Сколько слов длиною более двух символов может составить Лида?
Маша составляет 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)
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)
Проверь себя.)
Вася составляет 3-буквенные слова, в которых есть только буквы М, Е, Т, Л , А, причём буква А используется в каждом слове хотя бы 1 раз. Каждая из других допустимых букв может встречаться в слове любое количество раз или не встречаться совсем. Словом считается любая допустимая последовательность букв, не обязательно осмысленная. Сколько существует таких слов, которые может написать Вася?
Вася составляет 3-буквенные слова, в которых есть только буквы М, Е, Т, Л , А, причём буква А используется в каждом слове хотя бы 1 раз. Каждая из других допустимых букв может встречаться в слове любое количество раз или не встречаться совсем. Словом считается любая допустимая последовательность букв, не обязательно осмысленная. Сколько существует таких слов, которые может написать Вася?
from itertools import product
p = product(‘МЕТЛА',repeat=3)
n = 0
for x in p:
if (x.count('А') >= 1):
n += 1
print(n)
Все четырехбуквенные слова, в составе которых могут быть только буквы П, Я, Т, Ь, Д, Н, Е, Й, записаны в алфавитном порядке и пронумерованы начиная с 1. Вот начало списка:
1. ДДДД
2. ДДДЕ
3. ДДДЙ
4. ДДДН
5. ДДДП
6. ДДДТ
7. ДДДЬ
8. ДДДЯ
9. ДДЕД
...
Под каким номером в списке стоит последнее слово, которое не содержит ни одной гласной и все буквы в нем различны?
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) )
Петя составляет четырехбуквенные слова из символов КЕГЭ2023 и записывает их в алфавитном порядке в список. Считается, что цифры в используемом алфавите следуют за буквами. Вот начало списка:
1. ГГГГ
2. ГГГЕ
3. ГГГК
4. ГГГЭ
5. ГГГ0
6. ГГГ2
7. ГГГ3
8. ГГЕГ
...
Определите порядковый номер первого слова, которое начинается с цифры и не содержит двух подряд идущих одинаковых символов.