from itertools import *
#Прежде чем начинать, посмотрите itertools 


# Каждую букву использовать 1 раз => permutation
# Произвольное количество раз => product
# Обыкновенные комбинации, уникальные => combinations (не использовал в 8 номере еще)




print('>>>>>')
# №3540 К.Ю.Поляков
'''
Женя составляет слова переставляя буквы З, А, П, И, С, Ь. 
Сколько слов может составить Женя, если известно, 
что Ь не может стоять на первом месте и после гласной? 
'''
amount = 0
word = 'ЗАПИСЬ'
for i in permutations(word, r=6):
    s = ''.join(i)
    if s[0] != 'Ь' and 'АЬ' not in s and 'ИЬ' not in s:
        amount+=1
        #print(s)
print(amount)


print('>>>>>>>')
# №4008 К.Ю.Поляков
'''
Миша составляет 6-буквенные коды из букв Б, А, Л, О, Н. 
Каждая допустимая гласная буква может входить в код не более одного раза.
Сколько кодов может составить Миша? 
'''
count = 0
letter = 'БАЛОН'
for i in product(letter, repeat=6):
    j = ''.join(i)
    if j.count('А') <= 1 and j.count('О') <= 1:
        count+=1
print(count)


print('>>>>>>')
# №3538 К.Ю.Поляков
'''
Все 4-буквенные слова, составленные из букв П, Р, В, Д, А, записаны в алфавитном порядке и пронумерованы. 
Вот начало списка:
1. АААА 
2. АААВ 
3. АААД
4. АААП
5. АААР
6. ААВА
...
Найдите номер первого слова в этом списке, которое не содержит гласных и !одинаковых! - set букв. 
'''
write = 'АВДПР' # !!!!!!!!!!!!!!!! В этом задании важен порядок кодировки символов, А-1, В-2, Д-3, П-4, Р-5
for i, word_i in enumerate(product(write, repeat=4)):
    u = ''.join(word_i)
    if len(set(u)) == 4 and 'А' not in u:
        print(u, i+1)
        break

print('>>>>>>')
# 207 К.Ю.Поляков
'''
Вася составляет 5-буквенные слова, в которых есть только буквы С, Л, О, Н, 
причём буква С используется в каждом слове ровно 1 раз. 
Каждая из других допустимых букв может встречаться в слове любое количество раз или не встречаться совсем. 
Словом считается любая допустимая последовательность букв, не обязательно осмысленная. 
Сколько существует таких слов, которые может написать Вася? 
'''

def ok(x): #реализация через функция, удобно, используйте
    if x.count('С') == 1:
        return True
    else:
        return False
s_waw = 'СЛОН'
m = {x for x in product(s_waw, repeat=5) if ok(x)} #генератор
print(len(m))


'''
На этом все типы 8 задания заканчиваются, ВНИМАТЕЛЬНО читайте условия и у вас все получится)
'''

# см. '../ЕГЭ2021/itertools/learn'

