Leo’s math specialist showed us some examples of a game that they play in math pullouts. Basically, you have to figure out the values of each letter, based on a table of total values for names made up from those letters. Here’s the table:

My initial reaction was that this is ridiculously difficult; you’d have to solve 30 simultaneous linear equations. But after staring at it for a few moments, you’ll notice that some of the names are really weirdly spelled, like “KOLE”, for example. In short order this will lead to the discovery that actually makes the puzzle pretty easy. Specifically, notice that some of the names are exactly one letter away from one another, for example LEO and KOLE (which is why KOLE is spelled weirdly), so the value of the differing letter (K), must equal the numerical difference between these two names(249-242 = 7); that is: LEO=242 and KOLE=249, so K = (249-242) = 7. Once you discover this trick, you can find many of the letters by simple subtraction, and then you can get the rest by substitution into the longer names. Once I had this insight, it took me about 20 minutes to solve the whole thing by hand. (Including making a bunch of stupid errors!)

Okay, so that’s a sort of vaguely interesting math puzzle.

(Note added 2015-10-26: I can’t decide whether I believe that the “trick” of noticing that some of the names are one-off from one another is useful, or just stupid, like one of those stupid trick questions…”Ha Ha It’s an electric train so there is no smoke!” It’s sort of interesting to let the kids try out various things, like putting the names in numerical order, which is how I noticed the trick…but (a) it’s hard enough even when you know the trick, and (b) if you don’t get the trick, it’s REALLY hard. So I can see that some kids might get very frustrated if they never happen upon the trick. Anyway…)

What I don’t quite get it why didn’t they do the obvious STEM thing and use molecular (molar) weights instead of random names?

Towards this end, I wrote a program that took a list of rounded atomic weights — from here on, all inputs and calculations are rounded to the nearest integer — and formulas for common compounds, and figured out the (rounded) formula molar weights by summing the (rounded) atomic weights. Given that, all you need to do is find all the off-by-one-element neighbors.

It turned out not to be quite as simple as I thought it would be, as there are a bunch of special cases in the way formulas are written (example:CH3CH2CH2CH2OH), and I chose to exclude displaying the elements themselves because that obviously gives away the answer immediately. But anyway here’s the lisp code that computes the molar weights from their formulas, and then the one-atom-off neighbors.

And here’s a bit of the output, giving the neighbors for a few example molecules:

— Butane (C4H10 = 58) —

Butan-1-ol (CH3CH2CH2CH2OH): 74

Butyl Alcohol (C4H9OH): 74

Cyclopentane (C5H10): 70

Diethyl Ether (C4H10O): 74

Methoxyethane (CH3OCH2CH2CH3): 74

— Formic Acid (CH2O2 = 46) —

Formate (HCOO): 45

Hydrogen Peroxide (H2O2): 34

Formaldehyde (CH2O): 30

Hypooxalous Acid (H2C2O2): 58

Glyoxal (C2H2O2): 58

It can get pretty complex when you get into large molecules:

— Hexadecane (C16H34 = 226) —

Cetyl Alcohol (C16H34O): 242

— Cresol (C7H8O = 108) —

Toluene (C7H8): 92

Acetophenone (C8H8O): 120

Anisole (C6H5OCH2): 107

Orcinol (C7H8O2): 124

And the formulas are sometimes written in wacky ways:

— Butan-1-ol (CH3CH2CH2CH2OH = 74) —

Butane (C4H10): 58

From the above (actually, from the complete list of neighbors that the program produces), it’s easy enough to create a STEMyfied version of the names puzzle that would actually teach a little something about chemistry.