Другое

Палиндром: определение и применение в разных языках программирования

Lorem ipsum dolor

Палиндром — это такие слова, числа или символы, которые читаются одинаково в обоих направлениях. Палиндромы бывают образованы одним словом, состоящим из 1-2 символов, а могут быть образованы целыми текстами. Пример палиндрома из одного слова:

  • О! восклицание удивления;

  • 11;

  • дед;

  • Анна;

  • казак;

  • 123321;

  • и др.

Пример палиндрома из нескольких слов:

  • «А роза упала на лапу Азора»;

  • «Аргентина манит негра»;

  • «Лёша в полке клопа нашёл»;

  • «Нажал кабан на баклажан»;

  • «Ешь немытого ты меньше»;

  • и др.

Самый длинный палиндром на русском языке на сегодня — роман-амор «Зори Роз» или «Фантастический сон на берегу реки за минуту до пробуждения». Вот характеристика этого палиндрома:

  • строгий стиль, где допущена только замена символа «е» и «ё»;

  • соблюдает точный размер и рифму;

  • содержит 20836 букв;

  • содержит 5638 слов;

  • содержит 1206 палиндромных пар.

Причем тут программирование? спросите вы.

Палиндром в программировании

На самом деле, в обычной жизни редко когда есть нужда специально искать палиндром в тексте, а в программировании еще реже, чем в обычной жизни. Основная сфера, где палиндром и программирование пересекаются,это конкурсное программирование и собеседования. И там и там задач по поиску палиндрома в текстах хватает. Другое практическое применение поиска палиндрома в программировании остается на индивидуальном уровне, то есть, возможно, кому-то это надо, но чаще всего вообще никому не нужно. Суть сегодняшней статьи заключается в том, чтобы показать способ, как правильно выстроить алгоритм, который выполнит поиск палиндрома в тексте. Потом эти знания вы сможете применять по своему усмотрению.

Палиндром и С/С++

На одном только языке программирования С/С++ можно использовать несколько подходов для написания алгоритма поиска палиндрома, например:

  • простой алгоритм с применением асимптотики;

  • метод с использованием хеша;

  • алгоритм Манакера;

  • палиндромное дерево;

  • и др.

Программный скрипт, определяющий слово-палиндром и написанный на языке Си/С ++:

#include <iostream>

#include <cstring>

using namespace std;

bool check_polindrom(string word)

{

int len = word.length();

for(int i = 0; i< len/2; ++i)

{

if(word[i] != word[len-i-1])

{

return false;

}

}

return true;

}

 

int main()

{

string str;

cout<< "Введите символы: ";

cin >> str;

if(check_polindrom(str))

{

cout<< "Эти символьные знаки являются палиндром.";

}

else

{

cout<< "Эти символьные знаки не принадлежат к палиндрому";

}

return 0;

}

 

Скрипт программы на Си/С++, определяющий палиндром в документе:

void SlowN2::oddCount()

{

for(int indMiddle = 0; indMiddle< str.length(); ++indMiddle)

{

int leftLimit= indMiddle - 1, rightLimit = indMiddle + 1;

while(leftLimit >= 0 && rightLimit< str.length() && str[leftLimit] == str[rightLimit])

{

++cntPalindromes;

--leftLimit;

++rightLimit;

}

}

}

 

void SlowN2::evenCount()

{

for(int indMiddle = 0; indMiddle< str.length(); ++indMiddle)

{

int leftLimit = indMiddle, rightLimit = indMiddle + 1;

while(leftLimit >= 0 && rightLimit< str.length() && str[leftLimit] == str[rightLimit])

{

++cntPalindromes;

--leftLimit;

++rightLimit;

}

}

}

 

Палиндром и Python

Отыскать палиндром в документе, используя Python, несложно. Алгоритм поиска выглядит следующим образом:

  • необходимо прочитать символьный набор;

  • сохранить символьный набор в переменной;

  • «перевернуть» набор символов;

  • сравнить оригинальный набор с «перевернутым»;

  • если наборы совпадают, тогда необходимо вывести, что символы являются палиндромом;

  • если наборы не совпадают, тогда необходимо вывести оповещение об этом.

Пример кода:

str = ' строка, которую необходимо проверить на палиндромность'

str = str.casefold()

rev = reversed(str)

if list(str) == list(rev):

print("Это палиндром!")

else:

print("Это не палиндром!")

 

Палиндром и PHP

Чтобы найти палиндром, применяя PHP, необходимо преследовать ту же логику при составлении программы, как и на Python.

Как выглядит код программы:

<_?php

// для того чтобы определить палиндром в php, необходимо составить специальную функцию

 

$input = "строка, которую необходимо проверить на палиндромность";

echo '

Input String '. $input;

//реверсируем («переворачиваем») строку

$reverse = strrev($input);

echo '

Ouput String '. $reverse;

//сравниваем, если оригинальная строка одинакова с «перевернутой»

if($input == $reverse) (

echo '

'.$input.' Это палиндром!';

)

else (

echo '

'.$input.' Это не палиндром!';

)

?>

 

Заключение

Палиндром можно определить, применяя возможности любого языка программирования, а не только C/C++, Python, PHP. Для того чтобы найти палиндром, необходимо осознать механизм, по которому нужно осуществлять поиск. Реверс наборов символов (строк) — это самый простой подход, который в большинстве случаев помогает.

Схожие статьи

Прототипное программирование и прототипное наследование: что это?
Другое

Прототипное программирование и прототипное наследование: что это?

Алгоритмы и структуры данных С. Объясняем сложное простыми словами
Другое

Алгоритмы и структуры данных С. Объясняем сложное простыми словами

Переполнение буфера: технические особенности, ошибки и предупреждение
Другое

Переполнение буфера: технические особенности, ошибки и предупреждение

Голосовое управление Raspberry PI. Установка и использование
Другое

Голосовое управление Raspberry PI. Установка и использование