A Discounter Introduces Reductions: Multiple Anagrams

Many moons ago, I was playing with spelling dictionaries (see What is an index anyway?) and anagrams. After decoding a spelling dictionary for a word data base in the early 1980s, I wrote some word games, like scrabble and anagrams.

APT, PAT, and TAP are 3 words that are anagrams of each other. ARE, EAR and ERA is another set. Coming up with a 3 letter triple anagram isn’t too hard.

Does anyone know of other several letter triple anagrams?

It took about 5 minutes to write and 5 minutes to run the program below to find triple or more anagrams of 9 or more letters. The spelling dictionary used has some interesting words!

Coordinate the Decoration of your Maraschino Harmonicas to get Persistent Prettiness!

Click to download Dictionary.dll (you'll need to REGSVR32 this guy)

 

Here’re the results:

admonisher harmonised rhamnoside

anachorism harmonicas maraschino

anoestrous outreasons treasonous

antimonies antinomies semination

ascertains incrassate sectarians

banderoles bandoleers endorsable

brutalness subalterns substernal

carotenoid coordinate decoration

centralise interlaces linecaster

chromocyte cytochrome orchectomy

cretinised indiscreet indiscrete iridescent

deforciant fornicated fractioned

discounter introduces rediscount reductions

disculpate duplicates spiculated

encopresis necropsies precession

ethologies theologies theologise

germinates magnetiser steamering

hypocenter hypocentre nephrocyte

metaphysis sympathies sympathise

misaligned misdealing misleading

parentally paternally prenatally

persistent pinsetters prettiness

phytogenic pythogenic typhogenic

polyesters presystole proselytes

positional spoilation spoliation

presentive pretensive vespertine

reinducted uncredited undirected

scrutinies scrutinise sinecurist

activations cavitations vacationist

anisometric creationism romanticise

anthologies anthologise theologians

cinetoplast spinotectal tectospinal tenoplastic

considerate denarcotise desecration

description discerption predictions

eliminators misrelation normalities orientalism

festination infestation sinfonietta

gametogenic gamogenetic geomagnetic

paternoster penetrators transportee

americanists cartesianism sectarianism

iridectomies iridectomise mediocrities

obscurantist substraction subtractions

What modifications are needed to produce this output?

abel able bael bale bela elba labe

ares arse ears eras rase sear sera

aste east eats sate seat seta teas

elat late leat tael tale teal tela

abets baste bates beast beats betas tabes

aimer amire maier maire marie ramie rimae

alger argle elgar glare lager large regal

apers apres asper pares parse pears prase presa rapes reaps spare spear

apter parte pater peart petra prate taper

ardeb bared beard bread breda debar debra

arles  earls lares laser rales reals seral

ashed deash hades heads sadhe shade shead

aster rates reast stare tares tears teras

caret carte cater crate creta ecart react recta trace

dater derat rated tarde tared trade tread

deist diets dites edits sited stied tides

ensor norse noser rosen senor seron snore

ergon genro goner goren negro norge regno

ester reest reset steer stere teres terse trees

lapse leaps pales peals pleas salep sepal spale

laves salve selva slave vales valse veals

least salet setal slate stale steal taels tales teals tesla

peris piers pries prise ripes spier spire

alerts alters estral laster salter slater staler talers

aretes easter eaters reseat seater teaser teresa

arrest rarest raster raters sartre starer terras

aspers parses passer repass spares sparse spears

canter carnet centra cretan nectar recant trance

capers carpes casper crapes escarp pacers parsec recaps scrape spacer

carets cartes caster caters crates reacts recast traces

corset cortes coster escort rectos scoter sector

daters derats stader stared sterad trades treads

drapes padres parsed rasped spader spared spread

estrin inerts insert inters niters nitres sinter sterni strine trines

ingres reigns renigs resign sering signer singer

merits mister miters mitres remits smiter timers

nestor noster noters sterno stoner tenors tensor toners

palest palets pastel petals plates pleats septal staple

agister aigrets gaiters seagirt stagier strigae triages

aletris realist retails saltier saltire slatier tailers

anestri nastier resiant retains retinas retsina stainer stearin

aridest astride diaster disrate staider tardies tirades

earings erasing gainers regains reginas searing seringa

esprits persist priests spriest sprites stirpes stripes

alerting altering integral relating tanglier teraglin triangle

angriest astringe ganister gantries granites ingrates rangiest

estrange grantees greatens negaters reagents sergeant tangeres

nStart=SECONDS()

LOCAL ox as dictionary.dict

ox=CREATEOBJECT("dictionary.dict")

*ox.DictNum=2 && Smaller dictionary

*Find all words into a table.

?ox.FindMatches("*")

?ox.Words.Count

CREATE TABLE words (word c(25))

FOR i = 1 TO ox.Words.Count

      cWord=ox.Words.Item(i-1)

      INSERT INTO words VALUES (cWord)

ENDFOR

?"Now find anagrams"

CREATE CURSOR already (word c(25))

INDEX on word TAG word

SELECT word,LEN(TRIM(word)) as nlen FROM words WHERE LEN(TRIM(word)) > 9 ORDER BY 2 INTO CURSOR word10

SET PRINTER off

SET PRINTER TO t.txt

SET PRINTER on

SCAN

      IF !INDEXSEEK(word,.f.,"already")

            IF ox.FindAnagram(ALLTRIM(word),0) > 2

                  ?

                  FOR n = 1 TO ox.Words.Count

                        cWord=ox.Words.Item(n-1)

                        INSERT INTO already VALUES (cWord)

                        ??cWord," "

                  ENDFOR

            ENDIF

      ENDIF

ENDSCAN

SET PRINTER off

SET PRINTER TO

MODIFY FILE t.txt NOWAIT

?"Done in ",SECONDS()-nStart