Anagram

Animovaná ukázka anagramu (přesmyčky) anglických slov Listen a Silent (poslouchat/naslouchat, tichý/mlčící)

Anagram neboli přesmyčka je slovo či více slov, která vzniknou z původního slova či více slov tak, že se použijí všechna písmena v původním výrazu obsažená a změní se jejich pořadí. Často se přitom nedbá na diakritiku.

Přesmyčky patří mezi oblíbené hlavolamy.

Příklady

  • anagrams – ars magna (latinsky velké umění)
  • pekařství – přístavek
  • reklama – makrela – karamel
  • pěší toulka – koupaliště
  • já lord Voldemort – Tom Rojvol Raddle (v anglickém originále: Tom Marvolo Riddle – I Am Lord Voldemort)
  • plavecký stadion – ladné postavičky
  • zdravý spánek – zvěrský nápad – prášek navždy
  • hlavní město Praha – postihlá havranem – přesahovat lhaním – prohlásit neváhám – stíhán pohlavárem
  • kotel – loket
  • Clint Eastwood – Old West Action (anglicky „akce starého západu“)
  • chleba – blecha
  • Doctor Who – Torchwood (organizace ze jmenovaného seriálu)
  • Jim Morrison – Mr. Mojo Risin' (v textu písně L.A. Woman stejnojmenného alba kapely The Doors)
  • Elvira Lemon – Elena Rimlov (ze starého detektivního příběhu Smrt v Millet)
  • Carmilla – Millarca – Mircalla (anagramy jména upírky z gotického románu Carmilla)
  • Berckentin – Ritenbenck (zastaralé jméno grónské osady Appat)

Metody hledání přesmyček

Vyhledávání přesmyček je zajímavou úlohou pro výpočetní techniku. Předpokladem je kvalitní databáze slov v daném jazyce. Základní algoritmus je jednoduchý – postupně se zkouší kombinovat různá slova z databáze (většinou jde o kombinace maximálně tří slov) a porovnává se, jestli je výsledná kombinace přesmyčkou původního výrazu. K porovnávání lze využít např. regulárních výrazů. Tato cesta sice vede k cíli, ale velice pomalu, protože kombinací může být obrovské množství a práce s řetězcovými proměnnými je pomalá. Existuje ale elegantní postup, jak úlohu převést na práci s celočíselnými proměnnými a na jednoduché matematické operace. Tento postup využívá malá prvočísla a jejich vlastnosti. Nejprve se každému znaku abecedy přiřadí jiné malé prvočíslo (např. A = 2, B = 3, C = 5, atd.). Pak se nahradí znaky v původním řetězci za příslušná prvočísla a udělá se jejich součin (např. ABBA = 2*3*3*2 = 36). Slova z databáze se převedou na čísla stejným postupem. Číslo příslušné víceslovné kombinaci dostaneme vynásobením čísel odpovídajících daným slovům. Výrazy, které jsou navzájem přesmyčkou mají takovýto součin stejný (např. BABA = 3*2*3*2 = 36 nebo BA BA = (3*2)*(3*2) = 36). Rozkladem čísla 36 na prvočinitele nahlédneme, že ten je tvořen právě prvočísly 2, 2, 3 a 3. Celý problém porovnávání se pak převede na jednoduché matematické operace – násobení dělení a také modulo.

V praxi je však problém o dost složitější. Při delších výrazech se takovýmto násobením velice rychle narazí na horní limit velikosti celočíselné proměnné – ten se může lišit v různých programovacích jazycích, ale také může záviset na použitém operačním systému (32 bit / 64 bit). Vhodnými programátorskými postupy lze ale tento limit obejít a také omezit počet kombinací výstupních slov, které se porovnávají se vstupním řetězcem.

Související články

Externí odkazy

Pahýl
Pahýl
Tento článek je příliš stručný nebo postrádá důležité informace.
Pomozte Wikipedii tím, že jej vhodně rozšíříte. Nevkládejte však bez oprávnění cizí texty.
Autoritní data Editovat na Wikidatech
  • TDKIV: 000002277
  • BNF: cb12652910s (data)
  • GND: 4286873-7
  • LCCN: sh85004757
  • NLI: 987007294740305171