Сколько существительных-палиндромов в русском языке
Давние читатели этого бложика знают о моем увлечении тавтограммами и палиндромами (тавтограмма — словосочетание или рассказ, все слова которого начинаются на одну букву; палиндром — слово или фраза, которая читается одинаково слева направо и справа налево).
И мне всегда было интересно — сколько существительных русского языка являются палиндромами. Чтобы узнать это, потребовалось бы прочесть словарь русского языка от корки до корки, проверяя каждое существительное на палиндромность. Ясное дело, что такая перспектива не вызывала у меня энтузиазма.
И вот пришел на помощь пайтон. Создание скрипта с консультациями ИИ (подсказал метод splitlines и еще пару мелочей) заняло не более 10 минут. Скрипт состоит из 16 строк, включая пустые. На проверку списка существительных скрипту понадобилось... менее трех секунд.
Итак, из 51301 существительного русского языка палиндромами являются... 35. Всего 35! Вот они:
ага
боб
дед
довод
доход
заказ
кабак
казак
киник
кок
колок
комок
косок
коток
лал
мадам
мим
наган
нойон
око
поп
потоп
пуп
радар
репер
ротатор
ротор
тат
тет-а-тет
топот
тот
тут
ушу
шалаш
шиш
Список существительных, который я использовал для проверки, взят здесь. Принцип комплектования списка описан там же.
Следующим шагом, думаю, будет поиск таких слов-палиндромов, которые при прочтении справа налево образуют другое слово (например, топор-ропот).
Ах, да. Вот код, кому интересно:
with open(r'путь к файлу', 'r', encoding = 'utf-8') as nouns_file:
nouns_list = nouns_file.read().splitlines()
for word in nouns_list:
words_count += 1
reversed_word = word[::-1]
if word == reversed_word:
pal_count += 1
print(word)
print()
print('Проверка списка слов завершена.')
print(f'Всего слов в списке: {words_count}.')
print(f'Найдено палиндромов: {pal_count}.')
В тему
Автоматизируй это, или Слава ЯПам!