Условие
Все пятибуквенные слова, в составе которых могут быть только буквы Б, А, Т, Ы, Р записаны в алфавитном порядке и пронумерованы начиная с 1.
Ниже приведено начало списка.
- ААААА
- ААААБ
- ААААР
- ААААТ
- ААААЫ
- АААБА
- …………
Под каким номером в списке идёт первое слово, которое не содержит ни одной буквы Ы и не содержит букв А, стоящих рядом?
Решение
1. Генерируем все возможные слова в алфавитном порядке
for pos1 in 'abrti':
for pos2 in 'abrti':
for pos3 in 'abrti':
for pos4 in 'abrti':
for pos5 in 'abrti':
s = pos1 + pos2 + pos3 + pos4 + pos5
Чтобы сгенерировать слова в алфавитном порядке, нужно буквы А, Б, Р, Т, И расположить в алфавитном порядке. Это легко сделать, если взять первые 5 букв последнего столбца списка из условия! И только после этого можно для удобства заменить их на английские аналоги, чтобы не переключать раскладку клавиатуры во время написания кода.
2. Нумеруем слова
k = 0
for pos1 in 'abrti':
for pos2 in 'abrti':
for pos3 in 'abrti':
for pos4 in 'abrti':
for pos5 in 'abrti':
k += 1
s = pos1 + pos2 + pos3 + pos4 + pos5
print(k, s)
Внимательно следите за тем, чтобы первое слово имело номер 1.
Обязательно сверьте то, что выводит программа, с примером из условия!
3. Выводим номер нужного слова
k = 0
for pos1 in 'abrti':
for pos2 in 'abrti':
for pos3 in 'abrti':
for pos4 in 'abrti':
for pos5 in 'abrti':
s = pos1 + pos2 + pos3 + pos4 + pos5
k += 1
if ('i' not in s) and ('aa' not in s):
print(k)
Запускаем программу:
131
132
133
134
136
...
В ответ берём минимальное число.