Pchełki SQL, odcinek 16: palindromy i odwrócenia

https://xpil.eu/dCDja

Dzisiaj króciutka dwupchełka (jakkolwiek dziwnie by to słowo nie brzmiało) dotycząca - raz jeszcze - mojego ulubionego materiału pchełkowego, czyli słownika wyrazów języka dopuszczalnych w grach słownych. Około 2.7 miliona słówek, a więc niemało, jest się czym pobawić.

Dzisiaj poszukamy sobie wyrazów, które są swoimi własnymi palindromami (czyli, z polskiego na nasze, czytają się wspak tak samo jak niewspak), a także par wyrazów, które są swoimi wzajemnymi odwróceniami (a więc na przykład żółw - włóż, jeżeli ktoś kojarzy ten kawał, chwała mu za to, a jak nie, to niech da znać, mogę opowiedzieć).

Użyjemy tej samej bazy danych i tabeli, którą bawiliśmy się ostatnio.

Najpierw poszukamy słówek palindromicznych (czyli takich, którym wszystko jedno, od tyłu czy klasycznie):

SELECT slowo
FROM slowa
WHERE slowo = reverse(slowo)
ORDER BY LEN(slowo) DESC;

Kilka pierwszych wyników:

malajalam, okrawarko, owocowo, rotator, motetom, anilina, apokopa, imagami, imakami, imamami

Łącznie takich słów jest 142, a więc bieżące oznaczenie półrocza pierwszej rejestracji auta w Irlandii. Przypadek? Nie sądzę...

Drugie zapytanie znajdzie nam wszystkie pary słówek, takie, że jedno z nich przeczytane odtylcowo daje w wyniku to drugie, i wice wersal:

SELECT s1.slowo + ' - ' + s2.slowo s
FROM slowa s1 
JOIN slowa s2 ON s1.slowo = reverse(s2.slowo) and s1.slowo < s2.slowo

Kilka najdłuższych wyników:

amonalem - melanoma, monofoto - otofonom, monokin - nikonom, ketenom - monetek, kinolem - melonik, kokonom - monokok, menatem - metanem, moletom - motelom, monerom - morenom, akronim - minorka, alaksem - meskala, alaksom - moskala.

Takich par jest w sumie 606, a więc dokładnie dwukrotność liczby 303, oznaczenia słynnego polskiego dywizjonu myśliwców z drugiej wojny światowej. To już na pewno jest jakiś spisek Żydów, cyklistów, masonów i wielkich korporacji.

Obydwa powyższe zapytania nie zużyły więcej niż po 20 sekund każde, a więc nie starałem się o żadne dodatkowe optymalizacje. Schody zaczynają się, kiedy spróbujemy poszukać palindromów dwuwyrazowych (lub, ogólnie, N-wyrazowych) - obawiam się, że prostej a zarazem wydajnej metody nie ma. Jeżeli któryś z Czytelników jednak chciałby się podjąć tematu, proszę dać głos w komentarzu.

https://xpil.eu/dCDja

2 komentarze

Leave a Comment

Komentarze mile widziane.

Jeżeli chcesz do komentarza wstawić kod, użyj składni:
[code]
tutaj wstaw swój kod
[/code]

Jeżeli zrobisz literówkę lub zmienisz zdanie, możesz edytować komentarz po jego zatwierdzeniu.