Шаблон решения № 8 на список слов

Условие

Все пятибуквенные слова, в составе которых могут быть только буквы Б, А, Т, Ы, Р записаны в алфавитном порядке и пронумерованы начиная с 1.

Ниже приведено начало списка.

  1. ААААА
  2. ААААБ
  3. ААААР
  4. ААААТ
  5. ААААЫ
  6. АААБА
  7. …………

Под каким номером в списке идёт первое слово, которое не содержит ни одной буквы Ы и не содержит букв А, стоящих рядом?

Решение

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
...

В ответ берём минимальное число.

Ответ: 131.

Обновлено: Январь 19, 2024 — 12:03 пп

Добавить комментарий