During the "A Scandal in Belgravia" episode Lara Pulver's character Irene Adler shows Sherlock an email containing a code. Irene Adler then says to Sherlock "go on then, impress a girl".. or words to that effect.
Given that I was developing a soft spot for Irene Adler, that was effectively a challenge I wasn't going to miss, so I copied it down, and had a crack at deciphering it.
Fortunately at that point they did a little slow-motion sequence with overlaid animation of letters appearing in front of Benedict Cumberbatch's head, and I was able to pause it before they gave the answer away.
The plot is that Irene Adler has gained some information from a MOD official who liked showing off, and that she had copied the contents of an email that will save the world.
This email/code is displayed in the screenshot above, and at first glance, it looked like it could be Hex, and it looked like it might be about 40 characters, which felt like enough data to be informative, but not that was going to take all day to copy it down off the screen.
It was this;
007 Confirmed allocationI was little disappointed that it was 41 characters long, because being a prime number it meant that it wasn't going to be trivially composed of repeating fixed length sub patterns.
On a closer inspection, it's obviously not hex due to the G, H and K, and not other letterings such as musical notes, due to the H and K etc. (while composing the blog, it occurs to be that this also rules out some other representations such as of chess plays, and I briefly considered ACGT nucleotides)
My first thought was to try and break it into repeating chunks, and see if it was a sub-string, or that the first character was an indicator of how the rest of the string was to be interpreted.
4 C12C45F13E13G60A60B61F34G34J60D12H33K34KMaybe the initial 4 was an indicator of a multiple of 4 blocks of 10;
4 C12C45F13E 13G60A60B6 1F34G34J60 D12H33K34Kor 10 blocks of 4;
4 C12C 45F1 3E13 G60A 60B6 1F34 G34J 60D1 2H33 K34KOr that the code was the first 40 chars, and then the final K as the indicator:
and some variations;
4 C12C45F13E13G60A60B61F34G34J60D12H33K34Kbut its fairly obvious that after messing about with those splits, that there is a pattern of alternating numbers an letters;
4C12C 45F13 E13G6 0A60B 61F34 G34J6 0D12H 33K34 K
4 C12C4 5F13E 13G60 A60B6 1F34G 34J60 D12H3 3K34K
4 C 12 C 45 F 13 E 13 G 60 A 60 B 61 F 34 G 34 J 60 D 12 H 33 K 34 K
and you can try connecting those together either with the letter first, (1)
4 C12 C45 F13 E13 G60 A60 B61 F34 G34 J60 D12 H33 K34 Kor the numbers first... (2)
4C 12C 45F 13E 13G 60A 60B 61F 34G 34J 60D 12H 33K 34KThis pattern felt kind of nice (3), in that it had a repeating substring pattern ([:digit:][:alpha:]), that was joined with another repeating substring pattern ([:digit:]).
4C 1 2C 4 5F 1 3E 1 3G 6 0A 6 0B 6 1F 3 4G 3 4J 6 0D 1 2H 3 3K 3 4Kbut given none of those 3 had an obvious interpretation, the next step was following up on the symbol set, and looking for clues
So here is the numbers without the letters;
12451313606061343460123334here are the letters without the numbers;
CCFEGABFGJDHKKand the summary is that the letters are A-K but no I and numbers but no 7,8 or 9
So no I or 7,8 or 9This actually stumped me, because I thought the lack of 7,8,9 might be significant. This gives a number set of 0-6, which could be days of week, Sun-0, Mon-1, Tues-2 etc.
However of the three ways to delimit the string into sub strings, I thought this made the most sense;
4C 12C 45F 13E 13G 60A 60B 61F 34G 34J 60D 12H 33K 34KAt this point I was stumped, so I un-paused it, to find out the answer...
I pretty pleased to get as far as that, and that Sherlock is shown to do some similar elimination that I came up with.
Unfortunately I got sidetracked looking for interpretations of the number set 0-6, looking for ones which would explain the lack of 7,8,9.
You will have to watch the rest of it yourself to find out the answer;