The 2015 Ginter Code will start tomorrow. #thegintercode
— Ginter Code (@TheGinterCode) October 2, 2015
And boy did it.
The following sixty tweets, all released within a week's time, comprised the entire 2015 Ginter Code. If you are interested in this solution, but not familiar with this code program, I would highly encourage you to take ten minutes and read through the text of these sixty tweets, ignoring all the numbers and other peripheral information. Take a few more minutes, let it ruminate. Otherwise, the solution will bore you, and you won't fully appreciate what was, in my humble opinion, the best of the eight Ginter Code programs.
The Tweets
Ginter Code. At long last. Time to move. Do not delay. Others work. You must too.
— Ginter Code (@TheGinterCode) October 3, 2015
1 (2-2 6-4 1 4-7 5-10 3-2)
: 2 1 4 3 6 5#thegintercode
It’s pretty simple this time, because let’s face it, for points was insanity.
— Ginter Code (@TheGinterCode) October 3, 2015
2 (5 3-2 1-10 2-3 4-10 6)
: 5 4 1 6 2 3#thegintercode
So for this one, the instructions are the code. These are the instructions.
— Ginter Code (@TheGinterCode) October 3, 2015
3 (3 1 6-10 5-2 2 4)
: 1 6 3 2 4 5#thegintercode
Build the master set. It’s just base cards. That’s three hundred fifty total.
— Ginter Code (@TheGinterCode) October 3, 2015
4 (2-10 4-2 6-7 5-6 3 1-10)
: 1 2 6 3 4 5#thegintercode
All ten years of cards are used. Each card number is represented only once.
— Ginter Code (@TheGinterCode) October 4, 2015
5 (3-7 4-9 2-10 5-8 6-8 1-10)
: 2 6 4 3 1 5#thegintercode
You must deduce which of the ten with each card number is in the master set.
— Ginter Code (@TheGinterCode) October 4, 2015
6 (1-10 4-9 6-6 5-7 3-9 2-9)
: 3 1 2 5 4 6#thegintercode
The only thing you’ll ever need from a card back is the number, nothing more.
— Ginter Code (@TheGinterCode) October 4, 2015
7 (4-8 3-10 6-2 2-8 5-10 1-4)
: 1 4 3 6 2 5#thegintercode
You’ll need one piece of info from the card fronts; it’s not the color splash.
— Ginter Code (@TheGinterCode) October 4, 2015
8 (4 6 5 3-10 2-8 1-7)
: 2 1 4 3 6 5#thegintercode
But what to do with it? Oh, there’s lots that can be done. Just follow the rules.
— Ginter Code (@TheGinterCode) October 4, 2015
9 (2-9 6 4-7 3-4 5-7 1)
: 1 6 2 5 4 3#thegintercode
From here on out, you’re responsible for the order yourself. What’s changed?
— Ginter Code (@TheGinterCode) October 4, 2015
18 (3-2 5-9 2-4 4-3 6-8 1-2)
: 6 5 2 1 4 3#thegintercode
Here’s some good advice: always judge a book by its cover. We are as we appear.
— Ginter Code (@TheGinterCode) October 4, 2015
25 (3-2 4-3 2-7 5-6 1 6-5)
: 1 6 5 4 3 2#thegintercode
The representative for each card number is fixed thru one of six natures.
— Ginter Code (@TheGinterCode) October 5, 2015
37 (4 1 5 2 3 6)
: 4 2 6 1 3 5#thegintercode
Though the reverse of each method can also be used, so I guess that’s twelve.
— Ginter Code (@TheGinterCode) October 5, 2015
45 (1 4-4 3 5-2 2 6-2)
: 6 5 1 3 2 4#thegintercode
The same method is always used to pick within a single cohort.
— Ginter Code (@TheGinterCode) October 5, 2015
52 (5-5 1-8 3-5 4 2-8)
: 3 1 5 2 4#thegintercode
So the next question is, what exactly is a cohort? Well, you’re looking at one.
— Ginter Code (@TheGinterCode) October 5, 2015
31 (2-2 1 5-10 6-10 4-6 3-3)
: 1 5 6 2 4 3#thegintercode
OK, how do you know which method to use? That is the great mystery of our time.
— Ginter Code (@TheGinterCode) October 5, 2015
16 (3-9 6-2 1 4 2 5-2)
: 4 3 6 2 5 1#thegintercode
In pairs they work, though never together. Their shifts are standardized.
— Ginter Code (@TheGinterCode) October 5, 2015
53 (6-10 4-5 1-10 3 5-2 2)
: 1 4 6 2 3 5#thegintercode
Circadian factions, as usual, work at odds. Namely, up when down, down when up.
— Ginter Code (@TheGinterCode) October 5, 2015
34 (1-2 2-4 3-4 4-10 6-9 5-10)
: 2 1 6 4 3 5#thegintercode
That’s the background. So how does it all work? I riddle you that.
— Ginter Code (@TheGinterCode) October 5, 2015
28 (5-2 1-9 4 3-3 2)
: 1 4 5 2 3#thegintercode
Some line up neatly like very well-behaved kindergarteners. Elementary.
— Ginter Code (@TheGinterCode) October 5, 2015
21 (1-2 6-2 3-7 2 5 4)
: 1 3 6 5 2 4#thegintercode
The rest are all higher-level courses. They’ve mastered their arithmetic.
— Ginter Code (@TheGinterCode) October 5, 2015
13 (5-9 2 3-10 6-8 4-7 1)
: 2 3 6 5 4 1#thegintercode
Sometimes there are only ten to consider. Sometimes many more. Never less.
— Ginter Code (@TheGinterCode) October 6, 2015
42 (3-8 5 1-2 6-3 2-9 4-2)
: 4 1 6 2 3 5#thegintercode
Sometimes what I say will have, quote unquote, nothing to do with anything.
— Ginter Code (@TheGinterCode) October 6, 2015
48 (4-8 6-4 5 1 2-9 3-7)
: 1 4 2 3 5 6#thegintercode
But that will be rare indeed. There’s a lot to impart to you here.
— Ginter Code (@TheGinterCode) October 6, 2015
54 (1-3 2-5 3-9 5 4-6)
: 5 3 4 1 2#thegintercode
Sometimes size matters, sometimes it doesn’t. Aggregate or not? Also maybe.
— Ginter Code (@TheGinterCode) October 6, 2015
46 (4-2 6 2 5-7 3-9 1-3)
: 6 2 4 3 5 1#thegintercode
There’s one that is very hard to see. Don’t worry, I’ll use that one least often.
— Ginter Code (@TheGinterCode) October 6, 2015
12 (2-4 4-3 6 5-4 3-4 1-2)
: 1 3 6 2 5 4#thegintercode
Have you noticed those numbers down there? No helpful hint on those. Sorry.
— Ginter Code (@TheGinterCode) October 6, 2015
20 (5-10 2-3 3-3 6-2 4-10 1-7)
: 3 6 1 4 5 2#thegintercode
Do you want some examples? I could possibly give a few of those.
— Ginter Code (@TheGinterCode) October 6, 2015
35 (4-4 5-3 2-3 3-2 1)
: 1 2 4 3 5#thegintercode
Not yet, though. And of course not clearly. I am who I am, after all.
— Ginter Code (@TheGinterCode) October 6, 2015
50 (2-2 1-9 4-2 3-10 5-10)
: 5 1 3 2 4#thegintercode
Some people are good with numbers. Others prefer words. Most must use both.
— Ginter Code (@TheGinterCode) October 6, 2015
15 (5 2-2 3-7 4-5 1 6-2)
: 5 4 2 1 6 3#thegintercode
In a dog-eat-dog world, the husky is over the yorkie. Unless the day is bright.
— Ginter Code (@TheGinterCode) October 6, 2015
32 (4 5-9 1-10 2-2 3-3 6)
: 5 6 1 2 3 4#thegintercode
In basketball, it is said that one great player can elevate an entire team.
— Ginter Code (@TheGinterCode) October 6, 2015
10 (3-8 1-4 6-3 5 2-10 4-5)
: 4 5 1 3 6 2#thegintercode
That’s less true in baseball. Pretty good down the line will beat top-heavy.
— Ginter Code (@TheGinterCode) October 6, 2015
30 (4-7 1-3 2 3-5 5 6)
: 1 3 2 4 6 5#thegintercode
There’s no Triple Crown in this game, but sometimes we’ll get partway there.
— Ginter Code (@TheGinterCode) October 7, 2015
38 (2 3 4-2 1-4 6 5-4)
: 2 1 5 3 4 6#thegintercode
This tweet may seem useless, but I promise you none of them are.
— Ginter Code (@TheGinterCode) October 7, 2015
59 (3-6 5-7 4 1-5 2-7)
: 1 3 5 2 4#thegintercode
We’ll play some basketball, we’ll play some baseball, depending on the mood.
— Ginter Code (@TheGinterCode) October 7, 2015
26 (2-2 4-4 6-2 1-5 5 3-8)
: 4 2 6 5 1 3#thegintercode
Does anyone, pun-HATE-ctuation; as much as I do! I kind of wish it DIDN’OT exist?
— Ginter Code (@TheGinterCode) October 7, 2015
40 (1 2 4 6 5 3)
: 1 4 6 5 2 3#thegintercode
Andanotherthing,Ithinkmyspacebarmayjustbebroken.Whatdoyouthink?
— Ginter Code (@TheGinterCode) October 7, 2015
17 (4-7 5-3 6-8 1 2 3-10)
: 3 4 5 6 1 2#thegintercode
AnD lEt’S jUsT sTiPuLaTe ThAt CaPiTaLiZaTiOn Is AlSo WaY oVeR-rAtEd, OkAy?
— Ginter Code (@TheGinterCode) October 7, 2015
23 (6-2 5 1-7 3-2 2-2 4-4)
: 3 4 2 6 5 1#thegintercode
I think you have enough information now to work on five of the six methods.
— Ginter Code (@TheGinterCode) October 7, 2015
55 (6-3 2-9 3-2 4-10 5-2 1-2)
: 2 5 4 1 6 3#thegintercode
Well, as much information as I’m willing to give to you for free.
— Ginter Code (@TheGinterCode) October 7, 2015
24 (4-9 2 5-10 3-10 1-3)
: 2 1 5 4 3#thegintercode
But about that sixth one. Honestly, I’m not even sure how one can describe it.
— Ginter Code (@TheGinterCode) October 7, 2015
58 (4-3 5-6 3-2 1 2-4 6)
: 3 1 2 4 5 6#thegintercode
I mean, I know how to of course. But not without just straight giving it away.
— Ginter Code (@TheGinterCode) October 7, 2015
19 (3-2 5-7 2-2 4-8 6-10 1)
: 1 4 3 5 2 6#thegintercode
In some cases it will be the only one. Except when it’s the only one that’s not.
— Ginter Code (@TheGinterCode) October 7, 2015
43 (4 6-3 5-10 1 3-4 2-4)
: 2 3 4 6 1 5#thegintercode
But you know about that divide. You want to know what is and/or isn’t it, right?
— Ginter Code (@TheGinterCode) October 7, 2015
14 (2 4-8 3-10 1-9 5 6-2)
: 2 5 1 3 4 6#thegintercode
Lack of the larger picture: limitation for a more talent-raw Ginter party.
— Ginter Code (@TheGinterCode) October 7, 2015
33 (1 6 3 4 2 5)
: 5 6 2 1 4 3#thegintercode
In fact, you certainly won’t. Because that would be impossible.
— Ginter Code (@TheGinterCode) October 8, 2015
41 (1 4-3 5 2-10 3-5)
: 4 1 3 2 5#thegintercode
But when it hits, let that bigger piece be the match whose light you’ll need.
— Ginter Code (@TheGinterCode) October 8, 2015
44 (3-8 6-4 1-10 4-9 5-2 2)
: 4 6 3 5 1 2#thegintercode
The life of a Codemaster is hard. I know, you don’t want to hear it. But woe is me.
— Ginter Code (@TheGinterCode) October 8, 2015
60 (2-9 6 5-2 3 1-8 4-4)
: 2 1 3 5 6 4#thegintercode
All this time with a gestating code, you lose all sense of what’s a good hint.
— Ginter Code (@TheGinterCode) October 8, 2015
11 (2-4 5-3 4-10 3-5 6 1)
: 4 1 5 3 6 2#thegintercode
Too little? Too much? Don’t want to give it away, but it’s gotta mean something.
— Ginter Code (@TheGinterCode) October 8, 2015
51 (4-3 6 2-6 1-2 3 5-10)
: 4 6 5 2 1 3#thegintercode
Well that’s about all I can say about that. How about some hints?
— Ginter Code (@TheGinterCode) October 8, 2015
47 (4-10 2 5-10 3-10 1-2)
: 3 2 1 5 4#thegintercode
Posey is one who emerges from this cohort. But which one? And the other five?
— Ginter Code (@TheGinterCode) October 8, 2015
22 (5 4-5 6-6 3 1-2 2-4)
: 3 4 1 5 6 2#thegintercode
Flocculent Abe was a shoo-in when the method was selected for this cohort.
— Ginter Code (@TheGinterCode) October 8, 2015
57 (5-2 1 4-3 6 2 3-3)
: 6 4 2 3 1 5#thegintercode
Ann for my faivorite methad, noumber sicx, ask yourself abount lhe typaos.
— Ginter Code (@TheGinterCode) October 8, 2015
49 (1 6 2 3 4 5)
: 2 5 1 3 4 6#thegintercode
What to do when you’ve completed the set? That’s here too, if you read closely.
— Ginter Code (@TheGinterCode) October 9, 2015
29 (2-9 6-4 4-7 3-3 5 1)
: 2 1 4 3 6 5#thegintercode
The great mystery’s minute tail will show the way. Follow it in order to win.
— Ginter Code (@TheGinterCode) October 9, 2015
39 (2-6 6 1-10 5-10 4-5 3-4)
: 4 1 6 2 3 5#thegintercode
theres no more to be said youve got all you need to work but I wont be silent
— Ginter Code (@TheGinterCode) October 9, 2015
27 (4-8 1 3-10 5-2 6-10 2-10)
: 5 1 4 3 2 6#thegintercode
Irregularly, when I feel like it, I’ll tweet cards that are right. Study them.
— Ginter Code (@TheGinterCode) October 9, 2015
56 (2 4 6 1 5 3)
: 1 5 4 6 3 2#thegintercode
But that’s it for now. The race is on. Get cracking, Codebreakers.
— Ginter Code (@TheGinterCode) October 9, 2015
36 (2 4 3-10 1-2 5-3)
: 3 2 4 5 1#thegintercode
The Setup, and First Observations
The first thing you needed to recognize was that the text of all of the tweets has a fixed length. The text of each tweet, not considering spaces or punctuation, is either exactly 50 or 60 characters long. There are fifty tweets of length 60, and ten tweets of length 50, for a total of 3500 letters of text across the sixty tweets.In addition, you also needed to see that the numbers at the bottom of each tweet somehow corresponded to the text in the tweet itself. Tweets of length 60 had six corresponding numbers (1 thru 6), and tweets of length 50 had five corresponding numbers (1 thru 5). For example, observe that this tweet has sixty letters of text and numbers 1 thru 6:
Too little? Too much? Don’t want to give it away, but it’s gotta mean something.
— Ginter Code (@TheGinterCode) October 8, 2015
51 (4-3 6 2-6 1-2 3 5-10)
: 4 6 5 2 1 3#thegintercode
While this tweet has fifty letters of text and numbers 1 thru 5:
Well that’s about all I can say about that. How about some hints?
— Ginter Code (@TheGinterCode) October 8, 2015
47 (4-10 2 5-10 3-10 1-2)
: 3 2 1 5 4#thegintercode
The implication here is that, somehow, each tweet is going to be broken up into blocks of 10 letters each. Tweets of length 60 would contain six blocks of 10 letters each, and tweets of length 50 would contain five blocks. This is most explicit in the very first tweet, which contains six sentences, each exactly 10 letters long:
Ginter Code. At long last. Time to move. Do not delay. Others work. You must too.
— Ginter Code (@TheGinterCode) October 3, 2015
1 (2-2 6-4 1 4-7 5-10 3-2)
: 2 1 4 3 6 5#thegintercode
As you think your way through this, consider these three tweets in sequence:
Build the master set. It’s just base cards. That’s three hundred fifty total.
— Ginter Code (@TheGinterCode) October 3, 2015
4 (2-10 4-2 6-7 5-6 3 1-10)
: 1 2 6 3 4 5#thegintercode
All ten years of cards are used. Each card number is represented only once.
— Ginter Code (@TheGinterCode) October 4, 2015
5 (3-7 4-9 2-10 5-8 6-8 1-10)
: 2 6 4 3 1 5#thegintercode
You must deduce which of the ten with each card number is in the master set.
— Ginter Code (@TheGinterCode) October 4, 2015
6 (1-10 4-9 6-6 5-7 3-9 2-9)
: 3 1 2 5 4 6#thegintercode
The tweets contain 3500 total characters of text. Ten years of Allen & Ginter (2006-2015) contains 3500 base cards (1-350 each year). We were being instructed to build a "master set", 350 total cards, using exactly one card for each card number 1-350. We needed to somehow figure out which year's card to select for each card number. How would we determine the cards to select?
The representative for each card number is fixed thru one of six natures.
— Ginter Code (@TheGinterCode) October 5, 2015
37 (4 1 5 2 3 6)
: 4 2 6 1 3 5#thegintercode
Though the reverse of each method can also be used, so I guess that’s twelve.
— Ginter Code (@TheGinterCode) October 5, 2015
45 (1 4-4 3 5-2 2 6-2)
: 6 5 1 3 2 4#thegintercode
The same method is always used to pick within a single cohort.
— Ginter Code (@TheGinterCode) October 5, 2015
52 (5-5 1-8 3-5 4 2-8)
: 3 1 5 2 4#thegintercode
So the next question is, what exactly is a cohort? Well, you’re looking at one.
— Ginter Code (@TheGinterCode) October 5, 2015
31 (2-2 1 5-10 6-10 4-6 3-3)
: 1 5 6 2 4 3#thegintercode
So (1) there's something here about "methods" that must be used in order to select cards, (2) there are six (or twelve??) methods to be used, and (3) somehow, someway, the tweets and the cards are used together, or in conjunction with one another, in order to select each card.
Then, there's this bizarre language about the "great mystery of our time", which somehow pertains to knowing which method to use where (or when?).
OK, how do you know which method to use? That is the great mystery of our time.
— Ginter Code (@TheGinterCode) October 5, 2015
16 (3-9 6-2 1 4 2 5-2)
: 4 3 6 2 5 1#thegintercode
In pairs they work, though never together. Their shifts are standardized.
— Ginter Code (@TheGinterCode) October 5, 2015
53 (6-10 4-5 1-10 3 5-2 2)
: 1 4 6 2 3 5#thegintercode
Circadian factions, as usual, work at odds. Namely, up when down, down when up.
— Ginter Code (@TheGinterCode) October 5, 2015
34 (1-2 2-4 3-4 4-10 6-9 5-10)
: 2 1 6 4 3 5#thegintercode
If you're confused, then you've come to the right place. We thought we understood this in a general sense -- and it turns out that we were right about this fairly early on -- but I will continue and address that later.
From this point on, literally every tweet (I believe the next thirty-six, in fact) until the very last few pertain to the "methods", what they are, and how they are applied in order to select the representative for each card number. I encourage you read through those, and try to make sense of it all. Skipping to the end of the instructions:
What to do when you’ve completed the set? That’s here too, if you read closely.
— Ginter Code (@TheGinterCode) October 9, 2015
29 (2-9 6-4 4-7 3-3 5 1)
: 2 1 4 3 6 5#thegintercode
The great mystery’s minute tail will show the way. Follow it in order to win.
— Ginter Code (@TheGinterCode) October 9, 2015
39 (2-6 6 1-10 5-10 4-5 3-4)
: 4 1 6 2 3 5#thegintercode
Finally, there's something here about the "great mystery" (of our time) and its "minute tail" that tells us what to do once we've selected all 350 cards. The observation you needed to make here is that there are sixty tweets, and each one was tweeted at a unique minute (00-59).
So we have (1) tweets, (2) cards, (3) methods, and (4) time. All four of these components must somehow work in tandem to build a "master set" of 350 cards, selecting one card per card number from all ten years of A&G.
Sorting Through the Mess
Data overload can be one of the most inhibiting factors in separating the signal from the noise in any process, and it was the toughest part of this code. I'll spare you the gory details of explaining exactly how we sorted through everything to map the information we were given onto the process required to get moving on this code program. Suffice it to say that it involved a spreadsheet and Python code that would make any normal person go insane.
There are eight total pieces of information required to solve this code. The numbered information above applies to all of the sixty tweets.
Number 1 - The tweet text
Number 2 - Mapping from tweet to a subset of cards
Number 3 - Mapping from tweet text to individual cards within the subset
Number 4 - Mapping from the selected cards back into the text of the tweet
Number 5 - The hour of the tweet
Number 6 - The minute of the tweet
Number 7 - All 3500 A&G base cards from years 2006-2015
Number 8 - The "methods" required to put everything together
There are 3500 total cards, and 3500 total letters in the sixty tweets. The entire 2015 Ginter Code would consist of extracting a 350-character "secret message" from the text of the tweets, using all the other information as a guide. Here's the process:
-- Order all the tweets by the "Number 2" mapping above, 1-60.
-- Map each tweet 1-60 to a subset of card numbers, 1-350, in order. If the tweet text has sixty letters, map it to six card numbers; if it has fifty letters, map it to five card numbers. For example, Tweet 1 will map to Card Numbers 1-6. The tweet above, Tweet 5, will map to Card Numbers 25-30. When you reach the end, you will have mapped all sixty tweets to all 350 card numbers.
-- Take a given tweet, and break up the text of the tweet into chunks of ten letters each. Do this for all sixty tweets. For example, the tweet above, which says "All ten years of cards are used ... each card number is represented only once" would break up like so:
ALLTENYEAR
SOFCARDSAR
EUSEDEACHC
ARDNUMBERI
SREPRESENT
EDONLYONCE
-- Taking a given tweet and its assigned card numbers, map the 6x10 (or 5x10) block of tweet text onto the sixty (or fifty) cards. Do this using the "A-values" inside the parentheses, the "Number 3" mapping above. Do this for all sixty tweets. For example, the "A-values" in the tweet above are, in order, "(3-B 4-B 2-B 5-B 6-B 1-B)". Given that we are mapping to Card Numbers 25-30, our mapping will look like this:
ALLTENYEAR - 3 (Card Number 27)
SOFCARDSAR - 4 (Card Number 28)
EUSEDEACHC - 2 (Card Number 26)
ARDNUMBERI - 5 (Card Number 29)
SREPRESENT - 6 (Card Number 30)
EDONLYONCE - 1 (Card Number 25)
-- Now that you have chunks of tweet text mapped to Card Numbers, map the letters in each chunk onto the ten cards (2006-2015) with that Card Number. Do this for all sixty tweets (all 350 "chunks" of tweet text). For example, the tweet above maps "ALLTENYEAR" to Card Number 27. This will look like so:
A - 27 Luis Gonzalez (2006)
L - 27 Scott Podsednik (2007)
L - 27 Brad Hawpe (2008)
T - 27 Chien-Ming Wang (2009)
E - 27 Brad Hawpe (2010)
N - 27 Dillon Gee RC (2011)
Y - 27 Ricky Nolasco (2012)
E - 27 Shelby Miller RC (2013)
A - 27 David Ortiz (2014)
R - 27 Maikel Franco (2015)
-- In the letter-to-card mapping, remove all text except that which is found in the name on the front of the card. Do this for all sixty tweets (all 350 "chunks" of tweet text). This is tricky, because in A&G years 2006-2008, the full name of each player/subject was given.
A - LuisGonzalez
L - ScottPodsednik
L - BradHawpe
T - Wang
E - Hawpe
N - Gee
Y - Nolasco
E - Miller
A - Ortiz
R - Franco
-- Apply a method to select one card from the group of ten. Do this for all sixty tweets (all 350 "chunks" of tweet text). (I'm not even going to try to explain this here ... see the section entitled "The Methods and Card Selection" below.) The example above gives "E - Hawpe" as the proper selection.
-- Taking the six (or five) letters selected within a given tweet, use the "Number 4" mapping above to reorder the letters. Do this for all sixty tweets. For example, the tweet above gives us the string "E C A R T C", which when reordered using the mapping "2 6 4 3 1 5", gives us "T E R A C C".
-- Once this action has been performed for all sixty tweets, take the sixty chunks of ordered text and reorder them by the minute of the tweet, "Number 6" above. The result is a coherent 350-character message, which I will reveal in the final section.
The Methods and Card Selection
If you've made it to this point, pat yourself on the back and claim a small victory.I've shown you everything needed to solve this code, except the methods, what they are, how they were used, etc ... which, as it turns out, is about 80% of this code program. The tweets claim that there are six unique "methods", and that the reverse of each can be used, making effectively twelve. A large portion of the tweets are about these methods, how they are selected, and how they are applied. Consider these tweets once more:
OK, how do you know which method to use? That is the great mystery of our time.
— Ginter Code (@TheGinterCode) October 5, 2015
16 (3-9 6-2 1 4 2 5-2)
: 4 3 6 2 5 1#thegintercode
In pairs they work, though never together. Their shifts are standardized.
— Ginter Code (@TheGinterCode) October 5, 2015
53 (6-10 4-5 1-10 3 5-2 2)
: 1 4 6 2 3 5#thegintercode
Circadian factions, as usual, work at odds. Namely, up when down, down when up.
— Ginter Code (@TheGinterCode) October 5, 2015
34 (1-2 2-4 3-4 4-10 6-9 5-10)
: 2 1 6 4 3 5#thegintercode
These tweets are alluding to the use of the hour of each tweet (00-23) in determining the method to be used. We had already made some headway into what the methods were, but we weren't able to nail it down completely until a hint was provided about eight months later:
Okay okay. Let's say you'll have something by the end of the week. #thegintercode
— Ginter Code (@TheGinterCode) June 7, 2016
Before we get to the hint, I want a little credit for not tweeting just "something" this morning, as was my first instinct. #thegintercode
— Ginter Code (@TheGinterCode) June 10, 2016
Okay, I lied. My previous tweet today was the hint. Let's say it's an evening cohort made up of its 23 words. #thegintercode
— Ginter Code (@TheGinterCode) June 10, 2016
That's a much larger cohort than we're used to, but it's illustrative. #thegintercode
— Ginter Code (@TheGinterCode) June 10, 2016
The six methods yield three unique results, with one method impossible to perform in this abridged way:
— Ginter Code (@TheGinterCode) June 10, 2016
something x2
my x2
a#thegintercode
Chew on that. By the end of the weekend I'll give you their order. #thegintercode
— Ginter Code (@TheGinterCode) June 10, 2016
208120 31251181225 13511419 1921144125 #thegintercode
— Ginter Code (@TheGinterCode) June 10, 2016
There's a lot to decipher there, but here's what we were able to confirm:
-- Methods, whatever they may be, are used to select words (from cards or from tweets?);
-- Whether a tweet came in the morning or the evening, or some variation thereof, would determine which 'version' of a method to use;
-- From the final tweet there (which says "THAT CLEARLY MEANS SUNDAY"), simple mathematical calculations of transforming letters to numbers would likely be found among the methods.
something
— Ginter Code (@TheGinterCode) June 12, 2016
-----—---------—----
my
my
a
something#thegintercode
something
— Ginter Code (@TheGinterCode) June 13, 2016
-----—---------—----
my
my
a
something #thegintercode
It may appear that I accidentally posted the same tweet twice, but notice that the times are different. These two tweets were sent at the exact same minute, but six hours apart. This affirmed that methods were selected based on hour, and that they rotated every six hours (because there are six methods). This also helped give us an order to the methods, and then helped us determine what the methods were. Applied to his example tweet, the methods produced the following:
-- something: Method 5 - Word Length, longest/shortest
-- -----—---------—----: Method 6 - ??
-- my: Method 1 - Highest Single Letter Score, max/min (numerical value of single letter)
-- my: Method 2 - Average Letter Score, highest/lowest (numerical average of all letters)
-- a: Method 3 - Alphabetical Arrangement, first/last
-- something: Method 4 - Total Word Score, highest/lowest (numerical sum of all letters)
There's some ambiguity in the example, what with some of the methods producing identical results, so we actually didn't nail down the methods perfectly until the day we actually solved the code ... but whatever. :)
From this, we determined how the methods lined up with the tweet hours ... but one more trick. Everything I've posted is in Central Time. The Codemaster is in New York, Eastern Time. It's always something. In fact, the very first two tweets from the Codemaster, well before the code officially started, were already pointing in this direction:
Happy Ginter Day. Here's your first riddle: If hours were months and minutes were days, the Code would start now. #thegintercode
— Ginter Code (@TheGinterCode) July 23, 2015
I am in New York. #thegintercode
— Ginter Code (@TheGinterCode) July 23, 2015
Therefore, every tweet would have to be considered in Eastern Time for the methods to line up correctly in this way:
-- Method 1: Tweet Hours 2am, 8am, 2pm, 8pm
-- Method 2: Tweet Hours 3am, 9am, 3pm, 9pm
-- Method 3: Tweet Hours 4am, 10am, 4pm, 10pm
-- Method 4: Tweet Hours 5am, 11am, 5pm, 11pm
-- Method 5: Tweet Hours 6am, 12pm, 6pm, 12am
-- Method 6: Tweet Hours 7am, 1pm, 7pm, 1am
In the example given, an "evening cohort", we applied the max/highest/first/longest versions of the methods. In a "morning cohort", we would apply the min/lowest/last/shortest versions. Six methods, but actually twelve. Method 1 produced "my", because it has the maximum highest single letter of any word in the tweet ("y"). Method 2 also produced "my", because it has the highest average letter score of any word in the tweet ("m" + "y" = 13 + 25 = 38 ... 38/2 = 19). Method 3 produced "a", because it is first when all words in the tweet are sorted alphabetically. Method 4 produced "something", because it has the highest total score of any word in the tweet (sum of digits in "something" is 110). Method 5 also produced "something", because it is the longest of all the words in the tweet. Method 6 ... much like the Codemaster, I'm not even sure what to say about this one.
When we figured this out, we were left with confusion ... not because we understood the methods obviously, but because the Codemaster had just applied the methods to words in a tweet. This actually took us down a fruitless path of applying the methods to the tweets themselves. This was never their intended use. If you've ever been inundated with data, you know how easy it is to lose sight of what's important. The methods were meant to be applied to names on the fronts of cards.
An Example of Method Application
Let's return to our example from before:
This is an "evening cohort", Hour 9pm (Eastern), so we would apply the high version of Method 2, "average letter score", to the cards mapped to this tweet. Once again, we have:
ALLTENYEAR - 3 (Card Number 27)
SOFCARDSAR - 4 (Card Number 28)
EUSEDEACHC - 2 (Card Number 26)
ARDNUMBERI - 5 (Card Number 29)
SREPRESENT - 6 (Card Number 30)
EDONLYONCE - 1 (Card Number 25)
And once more, for simplicity, consider only Card Number 27, and the average letter score of each name:
A - LuisGonzalez - 13.9
L - ScottPodsednik - 12.4
L - BradHawpe - 8.7
T - Wang - 11.3
E - Hawpe - 10.6
N - Gee - 5.7
Y - Nolasco - 11.3
E - Miller - 11.5
A - Ortiz - 17.6
R - Franco - 9.5
Our instinct may tell us that the winner here is "Ortiz", with an average letter score of 17.6. However, there's just one more kicker in method application. (And for you all still keeping up ... this was the final piece we were missing. Great back-story about how we finally figured this out.) Earlier I talked about "A-values", but I never mentioned what to do with the "B-values". Look at the example tweet above, and consider Card Number 27. "A-B", "3-7" ... means that you should select the seventh-highest value that the method produces among the ten values. The B-value is a rank.
A - LuisGonzalez - 13.9
L - ScottPodsednik - 12.4
L - BradHawpe - 8.7
T - Wang - 11.3
E - Hawpe - 10.6
N - Gee - 5.7
Y - Nolasco - 11.3
E - Miller - 11.5
A - Ortiz - 17.6
R - Franco - 9.5
The seventh-highest value is 10.6, which belongs to "Hawpe", which is assigned to the letter "E" in the tweet. You have made your very first card selection in the 'master set', and found your very first letter.
Wasn't that fun, kids? Imagine doing that 350 times, using twelve different methods. A calculation of some sort had to be performed on all 3500 cards. This was careful, painstaking labor. But it had to be done. :)
The Final Arrangements
Once this process was complete for all 350 cards, and all internal rearrangements were made (see the example in the "Sorting Through the Mess" section), you were still left with sixty chunks of unreadable text, each chunk either five or six letters long. Knowing that we would be resorting everything in order by tweet minute at the end ... once we began applying methods and selecting letters, we gamed the system a bit and went ahead and sorted everything by minute, to try and speed up the decryption process.Once everything was done, all cards and letters were selected, and everything was put in its proper order, we had the following 350-character message:
CONGRATULATIONS ON CRACKING THE LAST STEP
NO ANAGRAMS HERE
TO WIN YOU MUST ACCESS THE TWITTER ACCOUNT GAMESETCRACKED
THE PASSWORD IS THE FIN NINE LETTERS OF THIS MESSAGE
MOVED UP THREE AND ALTERNATING CAPS AND LOWER
TWEET AT THE CODEMASTER AND YOUR OWN TWITTER ACCOUNT
AN IMAGE OF THE FIRST AND LAST CARDS IN THE MASTER SET
WITH THE REMAINDER OF THIS MESSAGE AS A HASHTAG
MASTER SET COMPLETE THE FINAL GINTER CODE IS CRACKED
Now, because we had screwed up a selection or twenty, we actually didn't have the full message right away. And wouldn't you know it, the part where we were hurting the most was in the definition of the password to the @GameSetCracked Twitter account. Once we spent an hour or two correcting our mistakes, we understood that the password would be the fin(al) nine letters of the entire message, shifted up by three, and alternating uppercase and lowercase.
Password: IsCrAcKeD + 3 == LvFuDfNhG
The rest, as they say, is history.

************************************
Looking back through what I've written here, even though it is an ocean of information, you might get the impression that this was not a difficult code program. However, there's a reason that almost everything we needed was released within a week's time, and it still took 19 months to be solved. There were many, many pieces that had to fall into place. Everything had to be precisely correct. If we made one wrong move, the entire thing would produce gibberish and would make no sense. Thankfully, it all came together.
We are very glad to have won, and we are grateful to the Codemaster for putting this together. Being the eighth and final Ginter Code program, he certainly went out with a bang. A+ for construction and presentation.
Thanks for the reading the 2015 Ginter Code Solution. We hope you enjoyed it.
Sincerely,
Jim and Grant
I'll kick off the comments here.
ReplyDeleteFor the Codemaster, I am curious about a couple of things:
(1) What insight can you give us into the original concept and design process? Did you hit any major/minor snags between design and implementation?
(2) "THE PASSWORD IS THE FIN(AL) NINE LETTERS OF THIS MESSAGE" ... what happened that caused you to write "FIN" instead of "FINAL"?
(3) Now that the Ginter Code is history, and you're nine years older than when you started it (and, if you're like the rest of us 30-somethings, you may have experienced significant life changes over that period of time) ... is it really, really over? Meaning, have you completed ruled out the possibility of doing something like this again?
I'm sure I'll come up with another question or two before the day is up.
Once again, congratulations and a hearty well done.
Delete1 - I can't recall any real eureka moments while putting the code together this time. Being the tenth anniversary of Ginter and the last code, building the master set seemed like the natural endgame. I don't remember when I came up with that, but it was very early in the process, probably earlier than any other code, and there was no agonizing or sleepless nights trying to think of a theme, as there had been pretty much every other time. Knowing that so early, it was just a matter of letting it roll around in my head for a while, and the form and steps of the code just accrued naturally over time. At a certain point, they accrued so much that I began to dread getting started, but it was better than the alternative I had experienced quite a few times before, flailing around until the last minute trying to come up with something simultaneously interesting, difficult, and solvable.
All that said, before I came up with the general idea, the only thing I knew I wanted to accomplish was to put out the code all at once with, in theory at least, no additional information necessary. This one was going to hinge on dedication, not happening to be on Twitter at the right time, as some people have complained about parts of past codes.
The only major snag I can think of is when I realized that even with the entire universe of Ginter cards to work with, I couldn't always engineer it to get the letters I needed to come out. This obviously became more pronounced the deeper I got and the smaller that universe become. I knew the solution to the problem immediately but really didn't want to go there. I beat my head against it for about a week trying to find another route but never did, and thus B values were born.
2 - I'm sure you noticed this part of the message was one of the two within the arcane method (along with the "finalg" part of the winning hashtag). That was by design, as a kind of final roadblock for anyone who was running away with it and a check against any unforeseen hacks I was just blind to. Originally it was "the last ten letters," but I realized that was stupidly easily guessed by anyone who had cracked everything but the arcane method, so I reworded it in a way that would be unambiguous to those who had cracked it, but inscrutable if you were missing only that part of the message.
3 - I make no promises (I learned my lesson in Willow Cove), but I wouldn't rule anything out. As exhausting as the whole thing can be, I always feel the pull back towards it around solution time.
Dearest Abe -
Delete1) The heck was all the "there's no triple crown" talk from the instructions? It was the only thing I didn't find a home for.
2) Please delight me with the "poem point" code reveal from the 2014 code, in detail. I still lose sleep over it (okay, I don't, but I still want to see how it worked)
3) Much appreciate the "all the info out at once" approach. Only wish the collective community liked to bash their heads against walls as much as me (a couple of you do tho, and I appreciate that).
4) I think had you still posted a few cards here and there along the way, it would have been enough to keep the interest around it, and we'd probably have found the solution much sooner. Though I did appreciate you removing some degrees of freedom with the "something" example. In the end, I forced Grant to think about how we could get "CONGRA" from the first six letters (similar to the Jacoby break in 2010). Once we knew "INTERC" was preceded by "FINALG", it was the incentive we needed to keep pushing through. He woke up with "rank order" in his head the next morning. Grant had found "INTERC" a year earlier after we cranked through the orignal scoring, sorting and gridding.
5) Thank you.
Really well done guys. I think we had tried your final revelation at some point a few months ago (Using B-value to choose the Nth card in the order). But we obviously were missing something somewhere else in the process, either the method selection, or something in the letter ordering, or maybe how we were using part 4 of the tweets (the last sequence of numbers). I don't think we ever got any readable text.
ReplyDeleteCongrats on a long-fought battle!
Ok please let us know when you are going to start- newbie here
ReplyDelete