Tuesday, February 13, 2007

Boggle

I've been obsessed with Boggle lately. I'm in the process of writing a CQ tech experiment article about my struggles and ultimate success in creating a perl Boggle board generator/solver, which is a lengthy story that I'll spare you here. I bought a "Boggle Deluxe" game for Stacey this Christmas, and we've played some games on it, and found it to be fun and to have a little learning curve while your brain pumps new blood into its pattern matching areas.

She and I have fun at restaurants with kids' menus that have word search games on them. Usually a word search will have items from the menu hidden on the board, or the theme of the restaurant (e.g, Bob Evans has "breakfast", "bacon", etc.). After we quickly find those words, we set about using a different colored crayon to circle words that they didn't intend to put on the board, usually three letter words put there randomly -- cat, hip. So Boggle was a natural extension for us for a family game.

I don't recall mentioning that to anyone, so it came as a surprise last week when my neighbors were playing Boggle on a board they just bought. I joined in their game and thought I was doing fair, but I came in last place. The game winner, who spends a good part of his downtime solving crossword puzzles, scored half again as much as I did. Humbling, sure, but it inspired me to go figure out what I was doing wrong and train myself to do better.

First, I needed to understand the game better, so off I went examining the game and writing perl code. Along the way I laughed, I cried, and learned an important lesson about love... oh wait, that was the Disney channel that was on in the background. What I did learn was that the dice in a standard 4x4 Boggle set were substantially different from the dice in Stacey's 5x5 Boggle Deluxe set, so no analysis of likely big words on 4x4 would give me an unfair advantage when I played the game with my daughter. The 4x4 set dice are set up thusly:

a a e e g n
a b b j o o
a c h o p s
a f f k p s
a o o t t w
c i m o t u
d e i l r x
d e l r v y
d i s t t y
e e g h n w
e e i n s u
e h r t v w
e i o s s t
e l r t t y
h i m n qu u
h l n n r z


There are 7 letters appearing on only one die, namely b, f, j, k, qu, x, and z. This means words that have any of those letters doubled can't be spelled on a Boggle board. Words such as abbey (two b's), pizza (two z's), and offer (two f's) are examples of this. Further examination shows oddities like you can't spell a word with both f and k, b and j, and you can't spell a word with two c's and one m, or two m's and one c.

Once I finished the board generator and solver, I struggled to find a good workable word list, having trouble with lists that had slang, acronyms, proper names, or that were missing plural and past-tense forms of words. I settled on an official Scrabble word list, and even it wasn't perfect, missing the famous Boggle 17-letter words "quadricentennials" and "sesquicentennials" (spellable with 16 Boggle dice because one of the dice is "qu"), but that did contain "inconsequentially".

Phase two of the project had a high geek-index, writing a perl script to take my Scrabble word list and make a Boggle lexicon out of it, figuring out exactly which words could be spelled with the dice and which could not. I've taken the list of words that can't be spelled with Boggle dice and put them here.

And speaking of words...

Geek rant of the day

I hate the IT world's appropriation and misuse of the word "Agnostic". It is used to indicate that something doesn't see a certain layer, and the designer doesn't care about it. For example, the Java language is operating system agnostic. Cell phones are spoken language agnostic. Java should work on any OS, and cell phones should carry any spoken language.

Agnostic, of course, is not the right word. If you break it down etymologically, you get "against knowledge", which sort of implies what the tech use is, but common usage of the word refers to not knowing if God is real. OK, so Java doesn't know if God is real, and neither do cell phones. I accept that premise, but it still doesn't convey what Joe IT flunky is trying to say. What he is trying to say is "Java is OS ignorant", or "Java is OS uncaring", but those just make Java sound like a jerk. Instead, a better sounding word was misappropriated, the speaker sounds more intelligent, Java doesn't sound like a jerk, and language as a whole suffers at the hands of vanity. Again.

No comments:

Post a Comment