I Sell Shoe Oil

by Soleless Hobo

I don't actually sell shoe oil.

In fact, I've never personally oiled a shoe.  But this is an article about typing words on calculators and, if you look very closely, you will notice that the title of this article can be spelled on a 12-digit calculator by entering the number 710304577351 and then viewing it upside down:

"Wow, neat!" you exclaim.  "The only word I know how to spell on a calculator is 07734, and I struggle even to do that!  How did you manage to construct such a complex masterpiece of the English language with only upside down numbers?"

Well, dear reader, I didn't just sit here stewing until it popped into my head.  The secret is that I used a reference list of calculator-friendly words that was produced by a custom computer script.

I recently purchased an old RadioShack EC-3015 10-key printing calculator, just because it had a vacuum fluorescent display, it looked cool, and it was priced very enticingly at $5.

While fiddling around with it, I realized that the only things I knew how to spell on a calculator were SLEIGH BELLS, HELLO, and a few very short words like BOO and HELL.

I thought that I could surely do better than this and, upon deciding that this was a highly worthwhile endeavor, I set out to advance my skills.

I sat pondering for a moment, and decided that I would write a Python script for filtering through a list of English words to find everything that would work on a calculator.

In about half an hour, I had a functioning script that worked pretty well (spoiler: I don't type very fast).  All it did was check each word in the dictionary to see if it was constructed from only the letters: L, B, H, S, G, I, E, or O

If the word fit the bill, it was added to a list, which was then printed to the console at the end of the script.  Words that were shorter than three letters long weren't counted.  Like I said, it worked pretty well and, in a very long word list that I found somewhere on the Internet, it found 666 calculator-compatible words.

Next, I tried running the SOWPODS list (which is used to check the legality of words in online Scrabble tournaments) through the program, but since the words in my copy of SOWPODS are all uppercase, I needed to modify the program to be case insensitive.

It found 758 compatible words in SOWPODS, which is odd, because I thought that my other word list was longer (it includes brand names and abbreviations and stuff).

Then it hit me: my longer list has some capitalized words, which would have been passed over by the previous iteration of the program.  Dumb.  After running the longer list through again, it found 1219 compatible words.  Much better.

Now when it prints out the list of calculator-compatible words on the console, with one word on each line, it is a little inconvenient to read.

In order to turn the SOWPODS-derived list into a much more viewable two-page document, I used LibreOffice to create an empty document with eight columns, and then pasted the word list into it.  When using SOWPODS as the program input, all of the output is in uppercase, so it also helps to convert it all into lowercase.

The window for changing column settings can be found by clicking on Columns... under the Format drop-down menu in the top bar, while the button for making selected text lowercase is located at Text -> lowercase in the same drop-down menu.  And that's it!  You now have an easily readable reference list of all Scrabble-legal English words that can be displayed on a calculator.  Pretty nifty, huh?

It is fun to browse through, and there's a lot of words in there that I wouldn't have thought of, like HILLBILLIES, GEOLOGIES, and LIEGELESS.

As for further research that the interested reader can conduct, well, some people may be of the opinion that the number 2 works as a "Z," and a lot of great words might be found if that principle were incorporated into the program.

In addition, it may be interesting to run different word lists through the program, like lists of given names or words from languages other than English.

I conclude this article by leaving the reader with a copy of the Python script:

shoe-oil.py:

# Script for finding calculator compatible words.
# Requires the presence of SOWPODS.txt in the working directory.

with open("sowpods.txt", "r") as dictfile:
    dicti = dictfile.read()
dicti = dicti.split("\n")

calcletters = "lbhsgieo"
calcfriendlylist = []
for word in dicti:
    if len(word) > 2:
        good = True
        for letter in word.lower():
            if not letter in calcletters:
                good = False
                break
        if good:
            calcfriendlylist.append(word)
for word in calcfriendlylist:
    print(word)

print(len(calcfriendlylist))

$ python ./shoe-oil.py
BEE
BEEBEE
BEEBEES
BEES
BEG
BEGO
BEGOES
BEGS
BEIGE
BEIGEL
BEIGELS
BEIGES
BEL
BELEE
BELEES
BELIE
BELIES
BELL
BELLE
BELLES
BELLIES
BELLS
BELS
BES
BESEE
BESEES
BESES
BESIEGE
BESIEGES
BESIGH
BESIGHS
BHEL
BHELS
BIB
BIBB
BIBBLE
BIBBLES
BIBBS
BIBLE
BIBLES
BIBLESS
BIBLIOLOGIES
BIBS
BIG
BIGG
BIGGIE
BIGGIES
BIGGISH
BIGGS
BIGOS
BIGOSES
BIGS
BILBIES
BILBO
BILBOES
BILBOS
BILE
BILES
BILGE
BILGES
BILL
BILLIE
BILLIES
BILLS
BIO
BIOG
BIOGS
BIOLOGIES
BIOS
BIS
BISE
BISES
BISH
BISHES
BLEB
BLEBS
BLEE
BLEES
BLESS
BLESSES
BLISS
BLISSES
BLISSLESS
BLOB
BLOBS
BLOG
BLOGS
BLOOIE
BOB
BOBBIES
BOBBISH
BOBBLE
BOBBLES
BOBOL
BOBOLS
BOBS
BOBSLEIGH
BOBSLEIGHS
BOG
BOGGISH
BOGGLE
BOGGLES
BOGIE
BOGIES
BOGLE
BOGLES
BOGS
BOH
BOHO
BOHOS
BOHS
BOI
BOIL
BOILS
BOIS
BOLE
BOLES
BOLL
BOLLS
BOLO
BOLOS
BOLSHIE
BOLSHIES
BOO
BOOB
BOOBIE
BOOBIES
BOOBISH
BOOBOISIE
BOOBOISIES
BOOBOO
BOOBOOS
BOOBS
BOOGIE
BOOGIES
BOOH
BOOHOO
BOOHOOS
BOOHS
BOOL
BOOLS
BOOS
BOOSE
BOOSES
BOS
BOSH
BOSHES
BOSS
BOSSES
BOSSIES
EBB
EBBLESS
EBBS
EEL
EELS
EGG
EGGLESS
EGGS
EGGSHELL
EGGSHELLS
EGIS
EGISES
EGO
EGOLESS
EGOS
EHS
EISEGESES
EISEGESIS
EISEL
EISELL
EISELLS
EISELS
EISH
ELEGIES
ELEGISE
ELEGISES
ELHI
ELIGIBLE
ELIGIBLES
ELL
ELLS
ELOGE
ELOGES
ELOGIES
ELS
ELSE
ESES
ESILE
ESILES
ESS
ESSE
ESSES
GEE
GEES
GEESE
GEGGIE
GEGGIES
GEL
GELEE
GELEES
GELLIES
GELOSIES
GELS
GEO
GEOLOGIES
GEOLOGISE
GEOLOGISES
GEOS
GESSE
GESSES
GESSO
GESSOES
GHEE
GHEES
GHESSE
GHESSES
GHI
GHIBLI
GHIBLIS
GHILLIE
GHILLIES
GHIS
GIB
GIBBOSE
GIBE
GIBEL
GIBELS
GIBES
GIBLI
GIBLIS
GIBS
GIE
GIES
GIG
GIGGLE
GIGGLES
GIGHE
GIGOLO
GIGOLOS
GIGS
GILGIE
GILGIES
GILL
GILLIE
GILLIES
GILLS
GIO
GIOS
GIS
GLEBE
GLEBELESS
GLEBES
GLEE
GLEES
GLEG
GLEI
GLEIS
GLIB
GLIBS
GLIOSES
GLIOSIS
GLOB
GLOBE
GLOBES
GLOBI
GLOBOSE
GLOBOSES
GLOBS
GLOGG
GLOGGS
GLOSS
GLOSSES
GLOSSIES
GLOSSLESS
GLOSSOLOGIES
GOB
GOBBI
GOBBLE
GOBBLES
GOBBO
GOBIES
GOBO
GOBOES
GOBOS
GOBS
GOE
GOEL
GOELS
GOES
GOGGLE
GOGGLES
GOGO
GOGOS
GOLE
GOLES
GOLLIES
GOLOSH
GOLOSHE
GOLOSHES
GOLOSHOES
GOO
GOOBIES
GOOG
GOOGLE
GOOGLES
GOOGLIES
GOOGOL
GOOGOLS
GOOGS
GOOL
GOOLIE
GOOLIES
GOOLS
GOOS
GOOSE
GOOSEGOB
GOOSEGOBS
GOOSEGOG
GOOSEGOGS
GOOSES
GOOSIES
GOS
GOSH
GOSS
GOSSE
GOSSES
GOSSIB
GOSSIBS
HEBE
HEBES
HEEL
HEELLESS
HEELS
HEH
HEHS
HEIGH
HEIL
HEILS
HEISHI
HELE
HELES
HELIO
HELIOLOGIES
HELIOS
HELIOSES
HELIOSIS
HELL
HELLHOLE
HELLHOLES
HELLISH
HELLO
HELLOES
HELLOS
HELLS
HELO
HELOS
HES
HIE
HIES
HIGGLE
HIGGLES
HIGH
HIGHISH
HIGHS
HILI
HILL
HILLBILLIES
HILLO
HILLOES
HILLOS
HILLS
HIOI
HIOIS
HIS
HISH
HISHES
HISS
HISSES
HISSIES
HOB
HOBBIES
HOBBISH
HOBBLE
HOBBLES
HOBO
HOBOES
HOBOS
HOBS
HOE
HOES
HOG
HOGG
HOGGISH
HOGGS
HOGH
HOGHS
HOGS
HOH
HOHS
HOI
HOISE
HOISES
HOLE
HOLELESS
HOLES
HOLIES
HOLLIES
HOLLO
HOLLOES
HOLLOO
HOLLOOS
HOLLOS
HOLS
HOO
HOOLIE
HOOLIES
HOOSH
HOOSHES
HOS
HOSE
HOSEL
HOSELS
HOSES
HOSS
HOSSES
IBIS
IBISES
IGG
IGGS
IGLOO
IGLOOS
ILL
ILLEGIBLE
ILLS
IOS
ISH
ISHES
ISLE
ISLELESS
ISLES
ISO
ISOGLOSS
ISOGLOSSES
ISOHEL
ISOHELS
ISOLOG
ISOLOGS
ISOS
ISSEI
ISSEIS
LEE
LEES
LEESE
LEESES
LEG
LEGES
LEGGE
LEGGES
LEGIBLE
LEGLESS
LEGS
LEI
LEIS
LEISH
LES
LESBO
LESBOS
LESES
LESS
LESSEE
LESSEES
LESSES
LIB
LIBEL
LIBELEE
LIBELEES
LIBELLEE
LIBELLEES
LIBELS
LIBS
LIE
LIEGE
LIEGELESS
LIEGES
LIES
LIG
LIGGE
LIGGES
LIGS
LILIES
LILL
LILLS
LILO
LILOS
LIS
LISLE
LISLES
LISSES
LOB
LOBBIES
LOBE
LOBES
LOBI
LOBLOLLIES
LOBO
LOBOLO
LOBOLOS
LOBOS
LOBOSE
LOBS
LOESS
LOESSES
LOG
LOGE
LOGES
LOGGIE
LOGGISH
LOGIE
LOGIES
LOGLOG
LOGLOGS
LOGO
LOGOI
LOGOS
LOGS
LOLIGO
LOLIGOS
LOLL
LOLLIES
LOLLS
LOLOG
LOLOGS
LOO
LOOBIES
LOOIE
LOOIES
LOOS
LOOSE
LOOSES
LOOSIE
LOOSIES
LOS
LOSE
LOSEL
LOSELS
LOSES
LOSH
LOSS
LOSSES
LOSSLESS
OBE
OBELI
OBELISE
OBELISES
OBES
OBESE
OBI
OBIS
OBLIGE
OBLIGEE
OBLIGEES
OBLIGES
OBO
OBOE
OBOES
OBOL
OBOLE
OBOLES
OBOLI
OBOLS
OBOS
OBS
OBSESS
OBSESSES
OES
OGEE
OGEES
OGLE
OGLES
OHO
OHOS
OHS
OIL
OILHOLE
OILHOLES
OILS
OLE
OLEO
OLEOS
OLES
OLIO
OLIOS
OLLIE
OLLIES
OLOGIES
OOH
OOHS
OOLOGIES
OOS
OOSE
OOSES
OSE
OSES
SEE
SEEL
SEELIE
SEELS
SEES
SEG
SEGHOL
SEGHOLS
SEGO
SEGOL
SEGOLS
SEGOS
SEGS
SEI
SEIL
SEILS
SEIS
SEISE
SEISES
SEL
SELE
SELES
SELL
SELLE
SELLES
SELLS
SELS
SESE
SESELI
SESELIS
SESH
SESHES
SESS
SESSES
SESSILE
SHE
SHEEL
SHEELS
SHEESH
SHELL
SHELLS
SHEOL
SHEOLS
SHES
SHH
SHIEL
SHIELS
SHIES
SHIGELLOSES
SHIGELLOSIS
SHILL
SHILLS
SHISH
SHISO
SHISOS
SHOE
SHOEBILL
SHOEBILLS
SHOELESS
SHOES
SHOG
SHOGGLE
SHOGGLES
SHOGI
SHOGIS
SHOGS
SHOO
SHOOGIE
SHOOGIES
SHOOGLE
SHOOGLES
SHOOL
SHOOLE
SHOOLES
SHOOLS
SHOOS
SIB
SIBB
SIBBS
SIBS
SIEGE
SIEGES
SIES
SIGH
SIGHLESS
SIGHS
SIGIL
SIGILS
SIGISBEI
SIGISBEO
SIGLOI
SIGLOS
SILE
SILES
SILL
SILLIES
SILLS
SILO
SILOS
SIS
SISES
SISS
SISSES
SISSIES
SISSOO
SISSOOS
SLEE
SLEIGH
SLEIGHS
SLISH
SLISHES
SLOB
SLOBBISH
SLOBS
SLOE
SLOES
SLOG
SLOGS
SLOOSH
SLOOSHES
SLOSH
SLOSHES
SOB
SOBOLE
SOBOLES
SOBS
SOG
SOGS
SOH
SOHO
SOHS
SOIL
SOILLESS
SOILS
SOL
SOLE
SOLEI
SOLELESS
SOLES
SOLGEL
SOLI
SOLO
SOLOS
SOLS
SOOGEE
SOOGEES
SOOGIE
SOOGIES
SOOL
SOOLE
SOOLES
SOOLS
SOS
SOSS
SOSSES

Code: shoe-oil.py

Code: sowpods.txt

Return to $2600 Index