Coo, shiver my sceptre!

A couple weeks ago James Grime linked on Twitter to a puzzle in the January 8, 1981 issue of New Scientist, which runs as follows:

“Beauty? Courage? Generosity? Patience? Wisdom? Which do you wish for the new-born Princess?” asked the Good Fairy.

“Beauty and Wisdom will do nicely, thank you,” replied the King, not wanting to seem greedy.

“Wait! For each gift you name, I shall bestow on her two of the other gifts instead. Each name of a gift triggers a different pair. Each gift is triggered by two of the names. But if you mention both names, they cancel out and she will not get that gift at all.”

“Coo, shiver my sceptre!” exclaimed His Majesty.

“Quite simple! For instance if you ask for Beauty and Courage, she will receive Generosity and Patience. If you ask for Beauty, Generosity and Patience, she will receive those three and Wisdom too. You in fact wished for Beauty and Wisdom. She shall have them, provided you ask for them in the simplest way.”

What gift or gifts should His Majesty ask for?

So we can associate each of the five gifts — let’s denote them by B, C, G, P, W — with two of the others. Let’s denote this by f(B) = X + Y, for example, where X and Y are the two gifts triggered by B. So what we know is

f(B) + f(C) = G + P


f(B) + f(G) + f(P) = B + G + P + W.

Formally, B, C, G, P, W are generators of (\mathbb{Z}/2\mathbb{Z})^5; informally they’re symbols that when added to themselves cancel out. Now, this function f is a homomorphism from (\mathbb{Z}/2\mathbb{Z})^5 to itself – that is, f(x+y) = f(x) + f(y). (This means we can do the cancelling either before or after translating from the language of what was wished for to what actually happens.) So therefore we know

f(B+C) = G+P, f(B+G+P) = B+G+P+W.

Adding these together we get

f(C+G+P) = B+W

which gives a way to get both beauty and wisdom — namely, asking for courage, generosity, and patience.

But what’s f(B+C+G+P+W) — that is, what do you get if you ask for everything? We have that “each name of a gift triggers a different pair, and each gift is triggered by two of the names”. So we have
f(B+C+G+P+W) = 2B+2C+2G+2P+2W
since each gift is triggered twice. And the right-hand side there is just zero. So
f(B+C+G+P+W) = 0
and we can rewrite this:
f((C+G+P) + (B+W)) = 0.
But since f is a homomorphism that’s just
f(C+G+P) + f(B+W) = 0
which is another way of saying f(C+G+P) = f(B+W). So in fact f(B+W) = B+W — that is, to get beauty and wisdom, just ask for them.

To see that this is the simplest possible solution, we need to show that no single gift triggers both beauty and wisdom. I can’t come up with a “clean” way to do this, but we can go brute force. Beauty must trigger wisdom, wisdom must trigger beauty, and beauty and wisdom both trigger the same other gift. This gift can’t be courage – if it were, then we’d have f(B) = W+C, but we know f(B+C) = G+P, so adding these we’d have $f(C) = W+C+G+P$, which is impossible. So the “other” gift is either generosity or patience. Repeatedly applying the constraints that every gift can occur twice and the facts we already know, those lead to the solutions

f(B) = W+G, f(C) = W+P , f(G) = C+P, f(P) = B+C, f(W) = B+G


f(B) = W+P, f(C) = W+G, f(G) = B+C, f(P) = C+G, f(W) = B+P

respectively, which differ by exchanging G and P wherever they appear. In no case is there a single gift X with f(X) = B+W, so the solution f(B+W) = B+W is indeed the simplest one.

Note: Jim Randell has been doing programmatic solutions to these puzzles for quite a while now.

2 thoughts on “Coo, shiver my sceptre!

  1. I don’t think you need brute force. Observe first that neither B and W can come up with B and W by themselves (if one does, the other will come up with 0). Furthermore if one of the other three does, it follows the other two must cancel each other out (since the “sum” of all three is 0).

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s