8.02 Подсчет количества слов/чисел
Ошибка.
Попробуйте повторить позже
Дарья составляет пятибуквенные слова из букв слова УСПЕХ, причем известно, что буквы в словах могут повторяться любое количество раз или же не встречаться вовсе. Помогите Дарье найти количество различных слов, являющимися палиндромами и содержащими в середине гласную букву.
Решение руками
На первое место слова мы можем поставить одну из 5 букв. На второе место можно поставить одну из 5 букв. На третье
место можем расположить одну из 2 букв. На чётвертое место мы можем поставить только одну букву, ту, что мы ставили
на второе место. На пятое место мы можем поставить только одну букву, ту, что мы ставили на первое место. В итоге,
количество подходящих слов равно:
Решение через циклы
Составим программу для перебора всех возможных слов. Поскольку нам нужны палиндромы, можно организовать 3
вложенных цикла: первый задаёт первую и последнюю буквы, второй – вторую и предпоследнюю, а третий – центральную.
Формируется именно палиндром, потому что строки собираются зеркально: слово имеет вид .
Проверка в таком случае сводится только к тому, чтобы центральная буква была гласной, потому что «палиндромность»
обеспечивается автоматически, а это условие уже соблюдено циклом, ведь
может принимать только гласные буквы.
Добавляем составленное слово в множество, чтобы избежать повторений. После отработки циклов выводим длину
множества, после чего получая ответ.
a = "УСПЕХ" # допустимые буквы count = set() # множество для подходящих слов for x1 in a: # первая и последняя буквы for x2 in a: # вторая и предпоследняя буквы for x3 in "УЕ": # центральная буква, только гласная s = x1 + x2 + x3 + x2 + x1 # составляем слово count.add(s) # добавляем слово в множество print(len(count)) # выводим количество слов
Решение через itertools
Для перебора всех возможных слов удобно использовать функцию из модуля
, которая строит все
5-буквенные комбинации с повторениями. После формирования строки проверяем два условия. Во-первых, слово совпадает
со своей обратной записью (s == s[::-1]), то есть оно является палиндром. Во-вторых, центральная буква
находится в списке гласных. Если оба условия выполнены, добавляем слово в список, в конце выводим его
длину.
from itertools import product ans = [] # список подходящих слов gl = "УЕ" # задаём гласные буквы for i in product("УСПЕХ", repeat=5): # перебор всех 5-буквенных слов s = "".join(i) # формируем строку # проверяем условие на палиндром и гласную в середине if s == s[::-1] and s[2] in gl: ans.append(s) print(len(ans)) # количество слов
Специальные программы

Программа
лояльности v2.0
Приглашай друзей в Школково и получай вознаграждение до 10%!

Крути рулетку
и выигрывай призы!
Крути рулетку и покупай курсы со скидкой, которая привязывается к вашему аккаунту.

Бесплатное онлайн-обучение
Для школьников из приграничных территорий России, проживающих в ДНР, ЛНР, Херсонской, Запорожской, Белгородской, Курской, Брянской областях и Крыму.

Налоговые вычеты
Узнай, как получить налоговый вычет при оплате обучения в «Школково».

Специальное предложение
для учителей
Бесплатный доступ к любому курсу подготовки к ЕГЭ, ОГЭ и олимпиадам от «Школково». Мы с вами делаем общее и важное дело, а потому для нас очень значимо быть чем-то полезными для учителей по всей России!

Вернём деньги за курс
за твою сотку на ЕГЭ
Сдать экзамен на сотку и получить обратно деньги за подготовку теперь вполне реально!