OK, I’ll bite. This little problem diverted me from work this afternoon, so the least I can do is post a reply;). I really hope I can format this right, or it’ll be a terrible mess…
(I’m a long time lurker but thought I’d sign up to share this)
Perl to the rescue. This script assembles a list of big words (from a linux-style word list), and a list of smallish words, then looks for big words which:
a) are made up of two smaller words, and
b) when you write the two smaller words in the reverse order, the resulting word is found in the list of big words.
hope that makes sense;) It prints out the big word, two small words, then the reversed word.
The most interesting ones, to me, are those where the word and it’s reverse aren’t obviously linked:
overtake/takeover (in the corporate sense)
bookcase/casebook
layover/overlay
handover/overhand (sounds like a tennis shot or something)
upwind/windup
sidetrack/trackside
fantail/tailfan (pidgeon vs aeroplane)
pintails/tailspin (and again…)
without/outwith
sidetrack/trackside
workhouse/housework (from Dickensian to modern times)
ownership/shipowner (I like this one!)
shotgun/gunshot
hungover/overhung
That’s enough for now…think I’ll go home.
OUT PUT:
redrive red rive rivered
potshots pots hots hotspots
wingover wing over overwing
joypop joy pop popjoy
upclose up close closeup
manpack man pack packman
rotgut rot gut gutrot
blowup blow up upblow
railhead rail head headrail
turnout turn out outturn
speakout speak out outspeak
uplook up look lookup
backset back set setback
holdup hold up uphold
cookout cook out outcook
outpitch out pitch pitchout
foldup fold up upfold
burnout burn out outburn
comedown come down downcome
liftback lift back backlift
rivered rive red redrive
ringdove ring dove dovering
headshot heads hot hotheads
picklock pick lock lockpick
buildup build up upbuild
barstool bars tool toolbars
nosecone nose cone conenose
teddie ted die dieted
fallback fall back backfall
castoff cast off offcast
dentin dent in indent
toolbars tool bars barstool
holdover hold over overhold
blowfly blow fly flyblow
outroll out roll rollout
footlight foot light lightfoot
takeover take over overtake
bookcase book case casebook
chairbed chair bed bedchair
hotspots hots pots potshots
overhold over hold holdover
linkup link up uplink
pinhead pin head headpin
outpush out push pushout
layover lay over overlay
overspill over spill spillover
overall over all allover
wingbacks wing backs backswing
outlay out lay layout
fishbone fish bone bonefish
uplock up lock lockup
upfold up fold foldup
shootout shoot out outshoot
overhand over hand handover
passout pass out outpass
gutrot gut rot rotgut
pileup pile up uppile
handover hand over overhand
upwind up wind windup
sellout sell out outsell
insculp in sculp sculpin
outcook out cook cookout
layout lay out outlay
putoff put off offput
runout run out outrun
output out put putout
buyout buy out outbuy
backseat back seat seatback
casebook case book bookcase
makeup make up upmake
birdsong bird song songbird
workbook work book bookwork
kavakava kava kava kavakava
fallout fall out outfall
outpull out pull pullout
tagrag tag rag ragtag
hotheads hot heads headshot
outrun out run runout
scaleup scale up upscale
dropout drop out outdrop
codling cod ling lingcod
rootworm root worm wormroot
everwhich ever which whichever
woodworm wood worm wormwood
greegree gree gree greegree
tailfan tail fan fantail
pushout push out outpush
lockup lock up uplock
bonefish bone fish fishbone
downplay down play playdown
pawpaw paw paw pawpaw
lightfoot light foot footlight
blether blet her herblet
lablab lab lab lablab
sidetrack side track trackside
outfall out fall fallout
grisgris gris gris grisgris
breakup break up upbreak
weewee wee wee weewee
ragtag rag tag tagrag
flyover fly over overfly
backfall back fall fallback
breakout break out outbreak
without with out outwith
upmake up make makeup
uphang up hang hangup
outbreak out break breakout
upscale up scale scaleup
fantail fan tail tailfan
overwing over wing wingover
outdrop out drop dropout
wormroot worm root rootworm
lingcod ling cod codling
spillover spill over overspill
gallnut gall nut nutgall
townhome town home hometown
boxwood box wood woodbox
kinakina kina kina kinakina
downcome down come comedown
hotshots hots hots hotshots
tailspin tails pin pintails
lookout look out outlook
backfire back fire fireback
setout set out outset
upgrown up grown grownup
redskin reds kin kinreds
turndown turn down downturn
uppile up pile pileup
flowback flow back backflow
flyblow fly blow blowfly
hangover hang over overhang
gascon gas con congas
cardphone card phone phonecard
bootjack boot jack jackboot
cutover cut over overcut
watchout watch out outwatch
stonerag stone rag ragstone
dovering dove ring ringdove
tiderip tide rip riptide
potshot pots hot hotpots
overlay over lay layover
printouts print outs outsprint
manhood man hood hoodman
floodwater flood water waterflood
outbuy out buy buyout
outsprint outs print printouts
overcarry over carry carryover
hilahila hila hila hilahila
tailcoat tail coat coattail
birdcage bird cage cagebird
within with in inwith
backpay back pay payback
dividivi divi divi dividivi
lastage last age agelast
allover all over overall
outback out back backout
humhum hum hum humhum
hometown home town townhome
outwith out with without
kinreds kin reds redskin
manjack man jack jackman
jackboot jack boot bootjack
worktop work top topwork
sideway side way wayside
coocoo coo coo coocoo
takeup take up uptake
backout back out outback
incase in case casein
washout wash out outwash
solein sole in insole
popjoy pop joy joypop
upstand up stand standup
outlook out look lookout
uptoss up toss tossup
pitchout pitch out outpitch
setback set back backset
upbreak up break breakup
sawpit saw pit pitsaw
trackside track side sidetrack
downturn down turn turndown
herein here in inhere
overpass over pass passover
jackman jack man manjack
uphold up hold holdup
longhead long head headlong
sawbuck saw buck bucksaw
hangup hang up uphang
overrun over run runover
packman pack man manpack
sweptback swept back backswept
oversleep over sleep sleepover
inhere in here herein
sleepover sleep over oversleep
waterflood water flood floodwater
cagebird cage bird birdcage
workout work out outwork
tossup toss up uptoss
windup wind up upwind
upcatch up catch catchup
backflow back flow flowback
woodbox wood box boxwood
songbird song bird birdsong
upblow up blow blowup
housework house work workhouse
outwatch out watch watchout
readout read out outread
sendup send up upsend
workpiece work piece piecework
indent in dent dentin
payback pay back backpay
outwork out work workout
takeout take out outtake
ownership owner ship shipowner
takeoff take off offtake
slipover slip over overslip
conenose cone nose nosecone
overcut over cut cutover
upstart up start startup
rollout roll out outroll
piecework piece work workpiece
overturn over turn turnover
outburn out burn burnout
gasman gas man mangas
cancan can can cancan
catchup catch up upcatch
slipcover slip cover coverslip
handoff hand off offhand
overfly over fly flyover
playdown play down downplay
upsend up send sendup
pullout pull out outpull
zoozoo zoo zoo zoozoo
chinachina china china chinachina
headrail head rail railhead
seatback seat back backseat
shotgun shot gun gunshot
shipmate ship mate mateship
huntsman hunts man manhunts
runover run over overrun
racehorse race horse horserace
workday work day daywork
standout stand out outstand
hotpots hot pots potshot
pindowns pin downs downspin
putout put out output
guesthouse guest house houseguest
headpin head pin pinhead
overtake over take takeover
houseguest house guest guesthouse
outturn out turn turnout
furfur fur fur furfur
jigjig jig jig jigjig
outpass out pass passout
coattail coat tail tailcoat
watchdog watch dog dogwatch
cutoff cut off offcut
sidehill side hill hillside
agelast age last lastage
fireback fire back backfire
backlift back lift liftback
daywork day work workday
downspin downs pin pindowns
houseboat house boat boathouse
linecut line cut cutline
hoodman hood man manhood
wormwood worm wood woodworm
boathouse boat house houseboat
setoff set off offset
walkout walk out outwalk
backtalk back talk talkback
overhang over hang hangover
shipowner ship owner ownership
closeup close up upclose
uplink up link linkup
turnover turn over overturn
turnup turn up upturn
lockpick lock pick picklock
nutgall nut gall gallnut
railbed rail bed bedrail
kingpin king pin pinking
cutline cut line linecut
overhung over hung hungover
workhouse work house housework
whichever which ever everwhich
chowchow chow chow chowchow
casein case in incase
upbuild up build buildup
frypan fry pan panfry
headlong head long longhead
standup stand up upstand
backswept back swept sweptback
outwalk out walk walkout
panfry pan fry frypan
insole in sole solein
lavalava lava lava lavalava
overslip over slip slipover
outwash out wash washout
talkback talk back backtalk
manhunts man hunts huntsman
hungover hung over overhung
wingovers wing overs overswing
bookwork book work workbook
lookup look up uplook
upturn up turn turnup
passover pass over overpass
Script (inefficient, I know, but it was a quick hack):
use strict;
use warnings;
open IN, $ARGV[0];
my %words;
while (<IN>){
chomp $_;
my $lower=lc $_;
$words{$lower}++;
}
# get all words between three and five letters long
my @small = grep {(length($_) < 5) && (length($_) > 3)} keys %words;
# add the two-letter words we want to look for
push @small, qw/be do go me if in is my of to on un up /;
# add the three-letter words we want to look for
push @small, qw/ sod can sax los urn tap jig job ike dug woe hot hug tex ibn tab bob faq foe any poe uri vat rub vic big rat elk bra lit ton eva may cub ace lev jot son bin ken rid pan err ice via kim bet rye tea goa era dow han bag sky arm sri oil tau was ply sum hem moo rut led zan spy low cog pod see bun yea sub bay roy awl abu get jay dad mat inn flo sea din god she liz tax wee ban jim sol ten ted had lax bid tim dig gun cab imp fag hom aim lot qua dis cue ark red sue fee lip odd nip loy stu hen nan two ale rip joe sly kid ned dry nil yet oat pie vex elf lab flu egg oar ape ego huh vie met hun pot fix act abe wan law dan jed fed fan pal gin mob hue bat apt rum jog mid abo boa wag paw jam nut ads owl cry has con kit ail eye men gig mew dec all irk rio hal ago toy fin hog sag ott ebb tar cop ski six ass ode dub hap roe gap pep tit the pup ray ear sow key cam mow eli its dee amy dew ram kin lew max mac bog non ant why jaw ann air jab rot but nab use mug gel old car dog pig wit oak are fit gus leg pro jug hey sun dim len bum ion ask out jew ohm fur web set aye nat bad age ere ada rho bug end him did boo ill gum tow des hoe eel how hut pub pay cut sam mae tin dip pop gil oft wei bar jet hip off per vow add gem leo gut sad jar rig buy hop own art gad nag phi awe net meg raw den put won pry rap fro toe nay orb yes quo try ate eve lac lap saw arc ron and rex ben boy kay van gas who rib fat way jut say rod bud pam our ida dud hum woo new nod her fir fly ink wig shu eat cat pun sit sex soy fig cod ira fry pea too pad rue sap mel ely mud few ham cup bee bye don sus war for map eke run ire sip par sao rae caw doe day pin joy rag oaf fen hew lee ewe ran lid wet orr erg tie tug pit bed pus cap opt rim pet bus hit tip wax hag lie man his tan box ugh ivy ore lay aid pox top del elm sew zoe lad paz let owe uzi sat sob nap gag gay hay bow dam lou hex eng fog tag lao asp peg win doc rug rob you icy hub pat die san pew mop dye tom hat pen yuh aft gab lag ash yon mad cot row fob hid now far got sir fib fun jon gnu bit cow tub ali mao bib zen beg pip lin sal ian moe mix ito vax one dar zoo fox due ado shy guy nor bah coo nun spa not dot/;
# assemble regular expressions
my $regstart = '^'. join '|^', @small;
my $regend = '^'. join ('$|^', @small).'$';
#
foreach (keys %words){
#print "$_, $&
"
#if the big word begins with a small word (eg. 'outlook' begins with 'out' )..
if (m/$regstart/o){
my $start = $&;
my $after=$';
# if the rest of the big word (eg. 'look') is also a small word..
if ($after =~ m/$regend/){
my $end = $&;
last if ($end eq $start);
my $backwards=$end.$start;
# and if those two words written the other way around (lookout) is also a big word..print it
print "$_ $start $end $backwards
" if $words{$backwards};
}
}
}