Поиск палиндромов в стихах Маяковского на Python

Прочел

    с начала

        буквы он,

выходит:

    «Куафер Симон».

С конца прочел

       знаток наук, —

«Номис» выходит

        «рефаук».

Данный фрагмент стихотворения Владимира Маяковского «История Власа, лентяя и лоботряса» демонстрирует, как поэт мастерски внедрил в текст палиндромы — слова и сочетания, одинаково читающиеся в прямом и обратном направлении.

Для автоматизации поиска таких «зеркальных» конструкций будем использовать язык Python. Вначале удалим из строки пробелы и знаки препинания, а затем приведём весь текст к нижнему регистру.

Проверка строки на палиндром

import re

def is_palindrome(s):
    s_clean = re.sub(r'[^а-яё]', '', s.lower())
    return s_clean == s_clean[::-1]

Функция is_palindrome сравнивает очищенную от посторонних символов строку с её обратной версией.

Поиск однословных палиндромов

def find_palindromic_words(text):
    words = re.findall(r'[а-яё]+', text.lower())
    palindromes = set()
    for word in words:
        if len(word) > 1 and is_palindrome(word):
            palindromes.add(word)
    return palindromes

if text.strip():
    palindromic_words = find_palindromic_words(text)

Поиск палиндромных фраз

def find_palindromic_phrases(text, max_length=5):
    words = re.findall(r'[а-яё]+', text.lower())
    palindromes = set()
    for length in range(2, max_length + 1):
        for i in range(len(words) - length + 1):
            fragment = words[i:i + length]
            joined = ''.join(fragment)
            if is_palindrome(joined):
                palindromes.add(' '.join(fragment))
    return palindromes

if text.strip():
    palindromic_phrases = find_palindromic_phrases(text)

В результате были обнаружены следующие словарные палиндромы: иди, или, как, топот, мадам, шиш, хах, тит, тят, ото, тот, тут, её, еле, ещё.

Среди нескольких слов — палиндромных фраз выявлены: и и, у у, у у у, же ж, а на.

Применение палиндромов в поэме «Хорошо» придаёт ей дополнительную глубину и подчёркивает многослойность текста, что органично вписывается в экспериментальный дух Маяковского и его стремление к новаторству.

В такие ночи,

в такие дни,

в часы

такой поры

на улицах

разве что

одни

поэты

и воры́.

Автоматизация при помощи Python позволяет быстро выявлять ритмические и фонетические повторы, служащие основой для более глубокого анализа поэтических текстов, где ритм и звук играют ключевую роль.

 

Источник

Читайте также