Ragmania, de anagrammenzoeker

De Nederlandse taal is rijk aan anagrammen. Volgens Hugo Brandt Corstius (absurd ontuchtig ros, 1935-2014) telt het Nederlands meer dan drie­honderd­duizend anagram­woorden, woorden dus die één ander woord opleveren. Anagrammen van meer dan één woord zijn er nog veel meer.

Driehonderdduizend anagramwoorden lijkt de PTHT overigens een nogal royale slag in de lucht. Neemt niet weg dat er in Nederland verschillende mensen zijn geweest die de computer hebben ingeschakeld om zoveel mogelijk anagrammen te zoeken. Battus, oftewel Hugo Brandt Corstius (schudt naburig torso) is de pionier (zie paragraaf ua in zijn meesterlijke Opperlans!). Onno Zweers (Noors wezen) schreef in 1996 het Windows-programma Maanrag, en Raymond Zand­bergen (zo'n brandygendarme) maakte een in veel opzichten verbeterde variant voor Linux, Ragmaan 2. Bovendien heeft de Van Dale op sommige cd-roms ook een ingebouwde anagrammen­zoeker.

Is er dan ruimte voor nog een andere zang naar ommekeer (ana­gram­men­zoeker)? Misschien niet, maar het is nu te laat: ik heb er ook al een gemaakt. Twee keer zelfs, want we zijn toe aan versie 2 van Ragmania.

De onmiddellijke aanleiding was dat ik plotseling merkte dat Maanrag niet werkt op toen nieuwere Windows-systemen, waaronder te verstaan alles van na Windows 98. Het programma verslikt zich in de grote geheugen­om­vang die tegenwoordig gebruikelijk is. Van maker Onno Zweers kreeg ik in juli 2003 een e-mailtje waaruit bleek dat we niet op een nieuwe versie hoeven rekenen, omdat de bron­bestan­den verloren zijn gegaan.

Ik stond paf (stond pik af)

De tweede aanleiding komt weer van Hugo Brandt Corstius (drastisch, onguur, bot). In Opperlans! schrijft hij over zijn eerste project om de Neder­landse taal na te vlooien op ana­grammen.

'Daar had ik iets moois voor verzonnen. Ik gaf aan elke letter een getalwaarde, altijd een priemgetal. (...) Bij elk woord vermenigvuldig je de getalwaarden van de letters met elkaar. (...) Woorden met dezelfde getalwaarde zijn anagrammen van elkaar, want producten van dezelfde priemgetallen.'

Ik mag wel zeggen dat ik door deze passage diep getroffen was. Ik stond paf. Wat een geniaal idee! En wat een prachtig samengaan van wiskunde en taalkunde!

Hugo Brandt Corstius, 1987Met de priem­getallen­truc zou een anagrammen­zoeker (zomergraan kan mee!), vele malen sneller zijn dan eentje die de teksten van woorden vergelijkt, zelfs al worden daartoe eerst de letters alfabetisch gerangschikt. Ik wilde weleens weten hoe veel sneller.

Vandaar dus Ragmania, mijn razendsnelle ana­gram­men­zoe­ker op basis van een idee van HBC. De zoekmachine van Ragmania is bijna tien keer zo snel als eentje die woorden vergelijkt op basis van de gesorteerde letters, blijkt uit een nogal informele test.

Battuslading (bilnaad gutst)

De vermenigvuldigde letter-priemgetallen noem ik de battuslading van een woord. Ragmania heeft een grote woordenlijst en weet van ieder woord de battuslading. Van het op anagrammen te onderzoeken woord berekent Ragmania ook de battuslading. Dan zoekt het programma totdat het een battuslading heeft gevonden waardoor die gedeeld kan worden, zonder dat er een rest overblijft. Het quotiënt is de battuslading van de overgebleven letters. Als het 1 is, hebben alle letters een evenknie gevonden en is een anagram gevonden. Is het ongelijk aan 1, dan zijn er nog letters die geen onderdak hebben, en zoekt Ragmania verder met het quotiënt.

Tijdens het zoekproces wordt dus helemaal niet naar de eigenlijke letters gekeken, maar alleen naar de deelbaarheid van de battus­ladings­getallen (belastinggeld staat nul, lang­benigste lust daalt, dan betaalt slungeligst!). Omdat het delen van twee getallen voor de computer als het ware één stap is, en het vergelijken van reeksen letters gedaan wordt in een groter aantal stappen, gaat het zo snel.

Wil je meer weten over Ragmania en schrik je niet van wat computercode, dan kun je een kijkje nemen in mijn GitHub-hoekje.

Sjaak 25-04-2025 00:16, bijgewerkt: 26-04-2025 19:18
comments powered by Disqus