Ботальщик составляет шестибуквенные слова, в которых встречаются только буквы С,О,Н. Причем буква С может стоять только на первом, втором или третьем местах и встречаться или только один раз, или ровно три раза, или не встречаться вовсе. Каждая из других допустимых букв может встречаться в слове на любом месте или не встречаться совсем. Словом считается любая допустисая последовательность букв, необязательно осмысленная. Сколько существует таких слов, которые может написать Ботальщик?
Рассмотрим 3 случая:
1. Буква С встречается в слове один раз. Тогда, на местах со второго по шестое может стоять одна из двух букв. Значит, в таком случае можно составить слова. Вариантов, когда буква С встречается в слове один раз, всего три — буква С либо на первом, либо на втором, либо на третьем месте. Значит, для первого случая всего существует
слов.
2. Буква С встречается в слове три раза. Такое возможно только при условии, что буква С стоит сразу на первом, втором и третьем месте. Значит, для букв О и Н остаются только четвёртое, пятое и шестое место. Всего таких слов .
3. Буква С вовсе не встречается в слове. Тогда на всех местах может стоять два варианта букв: либо О, либо Н. Таких слов .
Осталось просуммировать все результаты и получить конечный ответ: .
Решение программой (циклы):
ans = set()
alf = ’СОН’
for x1 in alf:
for x2 in alf:
for x3 in alf:
for x4 in alf:
for x5 in alf:
for x6 in alf:
w = x1 + x2 + x3 + x4 + x5 + x6
# С не может встречаться во 2-й половине слова
# на 3-х местах С может встречаться 0, 1, 2, 3 раза,
# нам не подходит только 2
if ’С’ not in w[-3:] and w.count(’С’) != 2:
ans.add(w)
print(len(ans))
Решение программой (itertools):
from itertools import product
ans = set()
alf = ’СОН’
for w in product(alf, repeat=6):
w = ’’.join(w)
# С не может встречаться во 2-й половине слова
# на 3-х местах С может встречаться 0, 1, 2, 3 раза,
# нам не подходит только 2
if ’С’ not in w[-3:] and w.count(’С’) != 2:
ans.add(w)
print(len(ans))