Sprawdzanie palindromu

Palindrom jest tekstem, który brzmi identycznie w kierunku przodnim i odwrotnym. Słowo „Madam“ jest łatwe do rozpoznania; natomiast fraza „A man, a plan, a canal: Panama“ wymaga chwili uwagi, ponieważ jej rozpoznanie zależy od ignorowania znaków interpunkcyjnych i przestrzeni między literami. Ten narzędzie standardyzuje wszystko, co wpiszesz – zmienia litery na małe, usuwa przestrzenie i znaki interpunkcyjne – oraz potwierdza, czy uzyskany tekst jest prawdziwym palindromem, pokazując przy tym odwrócony tekst obok niego.

W jaki sposób działa kontrola

  1. 1

    Wklej tekst lub numer

    Jedno słowo, fraza, długie zdanie lub ciąg cyfrowy.

  2. 2

    Zastosowano normalizację.

    Tekst jest zamieniany na małe litery, a wszystko, co nie jest literą ani cyfrą (spacje, znaki interpunkcyjne, symbole), zostaje usunięte. Każda litera Unicode jest zachowywana bez zmian, więc znaki diakrytyczne mają znaczenie, a pisma niełacińskie również działają.

  3. 3

    Porównaj przewrócony i odwrócony sposób.

    Jeśli uporządkowana ciągła odpowiada jej odwrotnej wersji, to jest palindromem.

  4. 4

    Sprawdź wynik.

    Narzędzie pokazuje zarówno źródłowe, jak i znormalizowane ciągu znaków w odwrotnym porządku w celu weryfikacji.

Przykłady klasycznych palindromów

Tekst Typ
madam Jedno słowo
level Jedno słowo
racecar Jedno słowo
A man, a plan, a canal: Panama fraza
Was it a car or a cat I saw? Pytanie
Never odd or even fraza
12321 Numer
Mr. Owl ate my metal worm Długa fraza
kajak Polskie słowo

Kategorie palindromów

  • Palindromy znaków. Wartość domyślna to identyczne litery w kolejności od początku i od końca, bez uwzględniania spacji.
  • Palindromy słowne. „I did, did I“ – każde słowo jest lustrzanie odwzorowane jako całość.
  • Semordnilapy. Słowa, które po odwróceniu tworzą inne słowo: „stressed“ → „desserts“.
  • Palindromy liczbowe. Dowolna sekwencja cyfr, która czyta się tak samo w obu kierunkach: 1991, 1881.
  • Palindromy genomowe. Sekwencje DNA, w których dany obszar czyta się identycznie na obu niciach (istotne dla enzymów restrykcyjnych).

Programowanie kontroli

Podstawowa logika w pseudokodzie:

function isPalindrome(s):
    normalized = lowercase(s)
    normalized = removeAll(normalized, /[^\p{L}\p{N}]/u)   // zachowaj litery i cyfry, dowolne pismo
    return normalized == reverse(normalized)

To standardowa pytanie przygotowawcze do rozmowy rekrutacyjnej. Warianty obejmują przypadki specjalne: ignorowanie znaków łączących Unicode, obsługa ciągów pustych, obsługa emoji oraz uwzględnienie grup grafemów.

Najczęstsze warianty zasady

  • Tryb rygorystyczny: liczy każdy znak, w tym spacje i znaki interpunkcyjne. "aba" spełnia wymogi; "a man a plan" nie spełnia.
  • Tylko litery i cyfry: usuwa wszystkie pozostałe elementy. Takie podejście stosuje większość zwykłych narzędzi do sprawdzania palindromów.
  • Normalizacja Unicode: niektóre narzędzia scalają formy z akcentami (NFKD) przed porównaniem, aby „café“ pasowało do „éfac“.

To narzędzie stosuje podejście oparte tylko na literach i cyfrach: zamienia tekst na małe litery, zachowuje każdą literę i cyfrę Unicode (dowolne pismo, w tym polskie znaki), a resztę usuwa. Nie scala akcentów, więc litera z akcentem musi pasować do tej samej litery. Nie ma osobnego przełącznika „tryb ścisły“.

Najczęściej zadawane pytania

Tak. Każdy pojedynczy znak jest bez problemu palindromem – odpowiada sobie po odwróceniu. Większość definicji pedagogicznych wymaga co najmniej trzech znaków, by była interesująca, natomiast definicja matematyczna dopuszcza długość równą 1 oraz nawet zero (string pusty).

Traktuj je jako ciągi cyfr. 121, 12321 i 1991 są palindromami liczbowymi. W przypadku dużych liczb całych sprawdź ich reprezentację jako ciągów cyfr; nie próbuj odwrotować liczby metodami arytmetycznymi, ponieważ wtedy utracono pierwsze zerowe.

W języku angielskim jednym z poważnych utworów jest „A Man, a Plan, a Canal: Panama“ oraz jego liczne rozszerzenia – palindromy wygenerowane komputerowo przez Petera Norviga liczą ponad 17 000 słów, choć żaden z nich nie spełnia wymogów gramatyki. Najdłuższym pojedynczym palindromem w języku angielskim wymienionym przez Guinnessa jest „tattarrattat“ (z powieści Ulyssesa autorstwa Joyce’a).

Tak, we wszystkich językach. Fiński wyraz „saippuakivikauppias“ (sprzedawca mydła w kamieniu, 19 liter) często jest uważany za najdłuższy naturalnie występujący jednowyrazowy palindrom w jakimkolwiek języku.

Powiązane narzędzia

Narzędzie jest dostępne w innych językach