Created
April 29, 2024 07:58
-
-
Save iemcd/508d924b907e520831b6241f8ee704bb to your computer and use it in GitHub Desktop.
Finding new word squares
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
and, non | |
was, ana | |
was, aka | |
was, aaa | |
war, ana | |
war, aka | |
war, aaa | |
did, iii | |
led, eye | |
led, eve | |
red, eye | |
red, eve | |
ten, eye | |
ten, eve | |
saw, ana | |
saw, aka | |
saw, aaa | |
far, ana | |
far, aka | |
far, aaa | |
iii, iii | |
del, eye | |
del, eve | |
let, eye | |
let, eve | |
dam, ana | |
dam, aka | |
dam, aaa | |
der, eye | |
der, eve | |
dna, non | |
net, eye | |
net, eve | |
tim, iii | |
raf, ana | |
raf, aka | |
raf, aaa | |
raw, ana | |
raw, aka | |
raw, aaa | |
pit, iii | |
tip, iii | |
ram, ana | |
ram, aka | |
ram, aaa | |
mad, ana | |
mad, aka | |
mad, aaa | |
www, www | |
das, ana | |
das, aka | |
das, aaa | |
tel, eye | |
tel, eve | |
ana, non | |
mar, ana | |
mar, aka | |
mar, aaa | |
mit, iii | |
sad, ana | |
sad, aka | |
sad, aaa | |
cbc, bob | |
aaa, ana | |
aaa, aka | |
aaa, aaa |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
part, asor | |
part, ajar | |
part, acir | |
part, amor | |
part, atir | |
part, amar | |
live, iiiv | |
star, tnua | |
draw, rosa | |
draw, raja | |
draw, rica | |
draw, roma | |
draw, rita | |
draw, rama | |
ward, asor | |
ward, ajar | |
ward, acir | |
ward, amor | |
ward, atir | |
ward, amar | |
flow, logo | |
flow, laro | |
flow, lavo | |
pool, otto | |
pool, ohio | |
pool, oiho | |
pool, onto | |
pool, otno | |
pool, oslo | |
pool, olso | |
anna, noun | |
anna, nuon | |
sees, edge | |
sees, egde | |
sees, else | |
sees, esle | |
sees, ease | |
sees, esae | |
sees, erie | |
sees, eire | |
evil, viii | |
loop, otto | |
loop, ohio | |
loop, oiho | |
loop, onto | |
loop, otno | |
loop, oslo | |
loop, olso | |
stem, time | |
stem, tsae | |
stem, take | |
stem, type | |
stem, true | |
stem, tree | |
stem, tixe | |
stem, tone | |
stem, tale | |
stem, tube | |
stem, tape | |
stem, tune | |
stem, tide | |
stem, tate | |
wolf, ogol | |
wolf, oral | |
wolf, oval | |
reed, edge | |
reed, egde | |
reed, else | |
reed, esle | |
reed, ease | |
reed, esae | |
reed, erie | |
reed, eire | |
otto, that | |
otto, taht | |
otto, test | |
otto, tset | |
otto, text | |
otto, txet | |
deer, edge | |
deer, egde | |
deer, else | |
deer, esle | |
deer, ease | |
deer, esae | |
deer, erie | |
deer, eire | |
leon, ecno | |
leon, euro | |
leon, echo | |
trap, rosa | |
trap, raja | |
trap, rica | |
trap, roma | |
trap, rita | |
trap, rama | |
rats, aunt | |
mets, emit | |
mets, east | |
mets, ekat | |
mets, epyt | |
mets, eurt | |
mets, eert | |
mets, exit | |
mets, enot | |
mets, elat | |
mets, ebut | |
mets, epat | |
mets, enut | |
mets, edit | |
mets, etat | |
noel, once | |
noel, orue | |
noel, ohce | |
only, noel | |
ylno, leon | |
well, evil | |
llew, live | |
held, evil | |
dleh, live | |
took, otto | |
koot, otto | |
book, otto | |
koob, otto | |
good, otto | |
doog, otto | |
help, evil | |
pleh, live | |
soon, otto | |
noos, otto | |
food, otto | |
doof, otto | |
room, otto | |
moor, otto | |
poor, otto | |
roop, otto | |
fell, evil | |
llef, live | |
wood, otto | |
doow, otto | |
felt, evil | |
tlef, live | |
cell, evil | |
llec, live | |
look, otto | |
kool, otto | |
bell, evil | |
lleb, live | |
roof, otto | |
foor, otto | |
foot, otto | |
toof, otto | |
door, otto | |
rood, otto | |
sell, evil | |
lles, live | |
moon, otto | |
noom, otto | |
tell, evil | |
llet, live | |
alex, live | |
xela, evil | |
cook, otto | |
kooc, otto | |
fled, live | |
delf, evil | |
belt, evil | |
tleb, live | |
tool, otto | |
loot, otto | |
root, otto | |
toor, otto | |
flew, live | |
welf, evil | |
cool, otto | |
looc, otto | |
hell, evil | |
lleh, live | |
self, evil | |
fles, live | |
glen, live | |
nelg, evil | |
boom, otto | |
moob, otto | |
ussr, sees | |
rssu, sees | |
hood, otto | |
dooh, otto | |
flee, live | |
eelf, evil | |
hook, otto | |
kooh, otto | |
rely, evil | |
yler, live | |
mood, otto | |
doom, otto | |
alps, loop | |
spla, pool | |
wool, otto | |
loow, otto | |
boot, otto | |
toob, otto | |
urdu, reed | |
udru, deer |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
parts, about, rotor | |
parts, about, rocor | |
parts, asset, rsfsr | |
sarah, ababa, radar | |
sarah, aroma, rotor | |
sarah, aroma, rocor | |
sarah, arora, rotor | |
sarah, arora, rocor | |
sarah, ahora, rotor | |
sarah, ahora, rocor | |
sarah, amora, rotor | |
sarah, amora, rocor | |
sarah, aroha, rotor | |
sarah, aroha, rocor | |
array, russa, rsfsr | |
array, reema, refer | |
array, reema, reger | |
array, reema, reber | |
assam, sutra, stats | |
straw, tessa, rsfsr | |
straw, tuoba, rotor | |
straw, tuoba, rocor | |
rotor, oruro, tumut | |
senna, evian, nitin | |
oprah, poona, rotor | |
oprah, poona, rocor | |
tamar, ababa, madam | |
tamar, ababa, maqam | |
tamar, ababa, malam | |
tamar, aviva, mirim | |
tamar, amina, mirim | |
tamar, anima, mirim | |
tamar, arima, mirim | |
tamar, amira, mirim | |
tamar, anika, mirim | |
tamar, akina, mirim | |
salah, ababa, laval | |
salah, ababa, lawal | |
annan, naira, nitin | |
harem, alone, rotor | |
harem, alone, rocor | |
massa, artus, stats | |
strap, tessa, rsfsr | |
strap, tuoba, rotor | |
strap, tuoba, rocor | |
yarra, ameer, refer | |
yarra, ameer, reger | |
yarra, ameer, reber | |
yarra, assur, rsfsr | |
masse, artus, stats | |
mares, alone, rotor | |
mares, alone, rocor | |
haram, ababa, radar | |
haram, aroma, rotor | |
haram, aroma, rocor | |
haram, arora, rotor | |
haram, arora, rocor | |
haram, ahora, rotor | |
haram, ahora, rocor | |
haram, amora, rotor | |
haram, amora, rocor | |
haram, aroha, rotor | |
haram, aroha, rocor | |
ramat, ababa, madam | |
ramat, ababa, maqam | |
ramat, ababa, malam | |
ramat, aviva, mirim | |
ramat, amina, mirim | |
ramat, anima, mirim | |
ramat, arima, mirim | |
ramat, amira, mirim | |
ramat, anika, mirim | |
ramat, akina, mirim | |
salas, ababa, laval | |
salas, ababa, lawal | |
kalam, ababa, laval | |
kalam, ababa, lawal | |
taras, ababa, radar | |
taras, aroma, rotor | |
taras, aroma, rocor | |
taras, arora, rotor | |
taras, arora, rocor | |
taras, ahora, rotor | |
taras, ahora, rocor | |
taras, amora, rotor | |
taras, amora, rocor | |
taras, aroha, rotor | |
taras, aroha, rocor | |
hamar, ababa, madam | |
hamar, ababa, maqam | |
hamar, ababa, malam | |
hamar, aviva, mirim | |
hamar, amina, mirim | |
hamar, anima, mirim | |
hamar, arima, mirim | |
hamar, amira, mirim | |
hamar, anika, mirim | |
hamar, akina, mirim | |
nanak, ababa, navan | |
nanak, ababa, natan | |
nanak, aroma, noyon | |
nanak, aviva, nitin | |
nanak, amina, nitin | |
nanak, arora, noyon | |
nanak, anima, nitin | |
nanak, arima, nitin | |
nanak, amira, nitin | |
nanak, ahora, noyon | |
nanak, anika, nitin | |
nanak, amora, noyon | |
nanak, aroha, noyon | |
nanak, akina, nitin | |
manna, arian, nitin | |
warts, about, rotor | |
warts, about, rocor | |
warts, asset, rsfsr | |
samad, ababa, madam | |
samad, ababa, maqam | |
samad, ababa, malam | |
samad, aviva, mirim | |
samad, amina, mirim | |
samad, anima, mirim | |
samad, arima, mirim | |
samad, amira, mirim | |
samad, anika, mirim | |
samad, akina, mirim | |
manas, ababa, navan | |
manas, ababa, natan | |
manas, aroma, noyon | |
manas, aviva, nitin | |
manas, amina, nitin | |
manas, arora, noyon | |
manas, anima, nitin | |
manas, arima, nitin | |
manas, amira, nitin | |
manas, ahora, noyon | |
manas, anika, nitin | |
manas, amora, noyon | |
manas, aroha, noyon | |
manas, akina, nitin | |
sanam, ababa, navan | |
sanam, ababa, natan | |
sanam, aroma, noyon | |
sanam, aviva, nitin | |
sanam, amina, nitin | |
sanam, arora, noyon | |
sanam, anima, nitin | |
sanam, arima, nitin | |
sanam, amira, nitin | |
sanam, ahora, noyon | |
sanam, anika, nitin | |
sanam, amora, noyon | |
sanam, aroha, noyon | |
sanam, akina, nitin | |
nitin, irani, talat | |
nitin, inari, talat | |
nanna, arian, nitin | |
talat, ababa, laval | |
talat, ababa, lawal | |
merah, enola, rotor | |
merah, enola, rocor | |
halas, ababa, laval | |
halas, ababa, lawal | |
annam, naira, nitin | |
talas, ababa, laval | |
talas, ababa, lawal | |
damas, ababa, madam | |
damas, ababa, maqam | |
damas, ababa, malam | |
damas, aviva, mirim | |
damas, amina, mirim | |
damas, anima, mirim | |
damas, arima, mirim | |
damas, amira, mirim | |
damas, anika, mirim | |
damas, akina, mirim | |
kanak, ababa, navan | |
kanak, ababa, natan | |
kanak, aroma, noyon | |
kanak, aviva, nitin | |
kanak, amina, nitin | |
kanak, arora, noyon | |
kanak, anima, nitin | |
kanak, arima, nitin | |
kanak, amira, nitin | |
kanak, ahora, noyon | |
kanak, anika, nitin | |
kanak, amora, noyon | |
kanak, aroha, noyon | |
kanak, akina, nitin | |
sanna, arian, nitin | |
kanan, ababa, navan | |
kanan, ababa, natan | |
kanan, aroma, noyon | |
kanan, aviva, nitin | |
kanan, amina, nitin | |
kanan, arora, noyon | |
kanan, anima, nitin | |
kanan, arima, nitin | |
kanan, amira, nitin | |
kanan, ahora, noyon | |
kanan, anika, nitin | |
kanan, amora, noyon | |
kanan, aroha, noyon | |
kanan, akina, nitin | |
harpo, anoop, rotor | |
harpo, anoop, rocor | |
annes, naive, nitin | |
natan, ababa, talat | |
seram, enola, rotor | |
seram, enola, rocor | |
sarat, ababa, radar | |
sarat, aroma, rotor | |
sarat, aroma, rocor | |
sarat, arora, rotor | |
sarat, arora, rocor | |
sarat, ahora, rotor | |
sarat, ahora, rocor | |
sarat, amora, rotor | |
sarat, amora, rocor | |
sarat, aroha, rotor | |
sarat, aroha, rocor | |
haras, ababa, radar | |
haras, aroma, rotor | |
haras, aroma, rocor | |
haras, arora, rotor | |
haras, arora, rocor | |
haras, ahora, rotor | |
haras, ahora, rocor | |
haras, amora, rotor | |
haras, amora, rocor | |
haras, aroha, rotor | |
haras, aroha, rocor | |
malam, ababa, laval | |
malam, ababa, lawal | |
xamax, ababa, madam | |
xamax, ababa, maqam | |
xamax, ababa, malam | |
xamax, aviva, mirim | |
xamax, amina, mirim | |
xamax, anima, mirim | |
xamax, arima, mirim | |
xamax, amira, mirim | |
xamax, anika, mirim | |
xamax, akina, mirim | |
karak, ababa, radar | |
karak, aroma, rotor | |
karak, aroma, rocor | |
karak, arora, rotor | |
karak, arora, rocor | |
karak, ahora, rotor | |
karak, ahora, rocor | |
karak, amora, rotor | |
karak, amora, rocor | |
karak, aroha, rotor | |
karak, aroha, rocor | |
ramah, ababa, madam | |
ramah, ababa, maqam | |
ramah, ababa, malam | |
ramah, aviva, mirim | |
ramah, amina, mirim | |
ramah, anima, mirim | |
ramah, arima, mirim | |
ramah, amira, mirim | |
ramah, anika, mirim | |
ramah, akina, mirim | |
malak, ababa, laval | |
malak, ababa, lawal | |
citic, irani, talat | |
citic, inari, talat | |
salat, ababa, laval | |
salat, ababa, lawal | |
marah, ababa, radar | |
marah, aroma, rotor | |
marah, aroma, rocor | |
marah, arora, rotor | |
marah, arora, rocor | |
marah, ahora, rotor | |
marah, ahora, rocor | |
marah, amora, rotor | |
marah, amora, rocor | |
marah, aroha, rotor | |
marah, aroha, rocor | |
annas, naira, nitin | |
essam, sutra, stats | |
mirim, irani, radar | |
mirim, inari, radar |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
animal, navara, ivluam | |
animal, navara, ivdnam | |
werder, emerge, reward | |
werder, eberle, reward | |
werder, enerie, reward | |
langer, amelie, netulg | |
ffffff, ffffff, ffffff | |
hellas, eilema, llebel | |
lamina, aravan, maulvi | |
lamina, aravan, mandvi | |
regnal, eilema, gluten | |
camara, aiakar, malika | |
camara, amaker, malika | |
ratnam, anaira, tahsin | |
ratnam, anaisa, tahsin | |
ratnam, alaina, tahsin | |
ratnam, agaila, tahsin | |
ratnam, ataixa, tahsin | |
ratnam, ataisa, tahsin | |
spacer, parade, aramac | |
spacer, phrase, aramac | |
spacer, pirate, aramac | |
spacer, paraje, aramac | |
animas, navara, ivluam | |
animas, navara, ivdnam | |
warder, amelie, resold | |
warder, amelie, retold | |
warder, akerue, reward | |
warder, averse, reward | |
warder, aherne, reward | |
warder, amerie, reward | |
salleh, amelie, lebell | |
relaid, etanni, lamina | |
relaid, ecangi, lamina | |
staats, tennet, ancona | |
staats, tennet, anocna | |
staats, tennet, antena | |
staats, tennet, anetna | |
staats, tennet, angina | |
staats, tennet, anigna | |
staats, tennet, anjana | |
staats, tennet, anajna | |
staats, tennet, annona | |
staats, tennet, anonna | |
staats, tennet, andina | |
staats, tennet, anidna | |
staats, tennet, annina | |
staats, tennet, aninna | |
staats, tennet, antona | |
staats, tennet, anotna | |
recaps, edarap, camara | |
recaps, esarhp, camara | |
recaps, etarip, camara | |
recaps, ejarap, camara | |
redraw, eilema, dloser | |
redraw, eilema, dloter | |
redraw, eureka, drawer | |
redraw, esreva, drawer | |
redraw, enreha, drawer | |
redraw, eirema, drawer | |
redrew, egreme, drawer | |
redrew, elrebe, drawer | |
redrew, eirene, drawer | |
samina, aravan, maulvi | |
samina, aravan, mandvi | |
aramac, rakaia, akilam | |
aramac, rekama, akilam | |
harrah, areena, reiner | |
harrah, areena, renner | |
harrah, areena, renier | |
harrah, areena, redder | |
harrah, aneera, reiner | |
harrah, aneera, renner | |
harrah, aneera, renier | |
harrah, aneera, redder | |
mantar, ariana, nishat | |
mantar, asiana, nishat | |
mantar, aniala, nishat | |
mantar, aliaga, nishat | |
mantar, axiata, nishat | |
mantar, asiata, nishat | |
marray, areena, reiner | |
marray, areena, renner | |
marray, areena, renier | |
marray, areena, redder | |
marray, aneera, reiner | |
marray, aneera, renner | |
marray, aneera, renier | |
marray, aneera, redder | |
reiman, eilema, ilagem | |
namier, amelie, megali | |
dialer, innate, animal | |
dialer, ignace, animal | |
yarram, areena, reiner | |
yarram, areena, renner | |
yarram, areena, renier | |
yarram, areena, redder | |
yarram, aneera, reiner | |
yarram, aneera, renner | |
yarram, aneera, renier | |
yarram, aneera, redder | |
marram, areena, reiner | |
marram, areena, renner | |
marram, areena, renier | |
marram, areena, redder | |
marram, aneera, reiner | |
marram, aneera, renner | |
marram, aneera, renier | |
marram, aneera, redder | |
basalt, animal, sidama | |
tlasab, lamina, amadis | |
astral, strela, trever | |
lartsa, alerts, revert | |
masala, animal, sidama | |
alasam, lamina, amadis | |
casale, animal, sidama | |
elasac, lamina, amadis | |
astray, strela, trever | |
yartsa, alerts, revert | |
casals, animal, sidama | |
slasac, lamina, amadis | |
nasals, animal, sidama | |
slasan, lamina, amadis | |
esdras, strela, drawer | |
sardse, alerts, reward | |
ystrad, strela, trever | |
dartsy, alerts, revert | |
casali, animal, sidama | |
ilasac, lamina, amadis |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
hoodoos, ottetto, ottetto, deedeed | |
soodooh, ottetto, ottetto, deedeed | |
hoopoos, ottetto, ottetto, peeweep | |
soopooh, ottetto, ottetto, peeweep | |
koodoos, ottetto, ottetto, deedeed | |
soodook, ottetto, ottetto, deedeed | |
voodoos, ottetto, ottetto, deedeed | |
soodoov, ottetto, ottetto, deedeed |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/perl | |
# Ian McDougall | |
# April 2023 | |
# looking for a new sator square | |
use strict; | |
use warnings; | |
use 5.36.0; | |
use List::Util 'any'; | |
my $n = 5; | |
# my $dictpath = '/usr/share/dict/words'; | |
my $dictpath = './words/enwiki-100k'; | |
my $dicthand; # full computer dict (filehandle) | |
my @words; # list of candidate words | |
my @ana; # list of anadromes (and palindromes) | |
my @non; # list of non-anadromes (and their reverses) | |
open($dicthand, "<", $dictpath) || die "$0: can't open $dictpath for reading: $!"; | |
while (<$dicthand>) | |
{ | |
chomp; | |
if (length == $n && ! /[^a-z]/) # match exactly n lowercase letters | |
{ | |
push(@words, $_); | |
} | |
} | |
foreach (@words) | |
{ | |
my $rev = reverse; | |
if ( any {/$rev/} @words ) | |
{ | |
push @ana, $_; | |
} else | |
{ | |
push @non, $_; | |
push @non, $rev; | |
} | |
} | |
sub make_query ( @square ) | |
{ | |
my $query = '.' x (length $square[0] || 1); | |
for (my $i = 0; $i <= $#square; $i++) | |
{ | |
substr $query, $i, 1, substr $square[$i], $#square+1, 1; | |
substr $query, -1-$i, 1, substr $square[$i], -2-$#square, 1; | |
} | |
return $query; | |
} | |
sub find_squares ( $n, @part ) | |
{ | |
if (scalar @part >= ($n/2)) | |
{ | |
say join(", ", @part); | |
} else { | |
my $w_query = make_query(@part); | |
my @ana_may = grep { /$w_query/ } @ana; | |
foreach (@ana_may) | |
{ | |
find_squares( $n, @part, $_); | |
} | |
my @non_may = grep { /$w_query/ } @non; | |
foreach (@non_may) | |
{ | |
find_nears( $n, @part, $_ ); | |
} | |
} | |
} | |
sub find_nears ( $n, @part ) # will never find another "nearby" match, as one has been used | |
{ | |
if (scalar @part >= $n/2) | |
{ | |
say join(", ", @part); | |
} else { | |
my $w_query = make_query(@part); | |
my @ana_may = grep { /$w_query/ } @ana; | |
foreach (@ana_may) | |
{ | |
find_nears( $n, @part, $_); | |
} | |
} | |
} | |
my @init_sq = (); | |
find_squares( $n, @init_sq); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment