The methods in the post are interesting, but technically against the rules of the game.
EDIT: Though I didn't figure out whether he means "clues about the position" or "clues about the words, until you can open enough cards to narrow down to one memorized position".
Basically, the claim is that based entirely on the pattern of the board (revealed red, blue, and white cards), there are so few legal board configurations (the cards that the spymasters are using), that the field operatives can ignore the hint the spymaster gave, and guess correct cards anyway based on the board's revealed information.
Effectively, a game where the red team uses this strategy might go like this:
Red Team Spymaster: Word unlimited
Red Team Field Operatives: <pick card at random, get white at the lower right>
Blue Team Spymaster: <Real Hint> 2
Blue Team Field Operatives: <pick 2 correct cards at the upper left>
Red Team Spymaster: Word unlimited
Red Team Field Operatives: "Well, there's only one spymaster card with a white card in the lower right and two blue cards in the upper left, so now we know where every card is and can pick all the red cards" <wins>
In a real practical implementation here, the spymaster would probably actually clue "<death card hint> 0" each turn in order to ensure their team can safely pick at random until there's enough information to know which board they're on.
Please point me to the rule that bans this: https://czechgames.com/files/rules/codenames-rules-en.pdf
We had a game once where one team was starting to look at that card because of previous hints and the spymaster did exactly that to say "don't do it", but because the hint was for that card they ignored the number and picked it that round.
"Sometimes you may have multiple unguessed words related to clues from the previous rounds. If you want your team to guess more than one of them, you may say unlimited instead of a number."
You can't use "unlimited" as you're proposing - it's allowed only if there are multiple unguessed words from previous clues.
That said, the "0" approach isn't banned by the rules and would work the same way.
Not entirely about guessing. In fact, guessing isn’t involved at all, at least not after the first turn.
You left out that to do this, you need to have memorized basically all of the spymaster cards, or enough of them to increase the odds of you figuring out the configuration.
This is basically the same as the cheat in the memory match game in Super Mario Bros. 3 where you uncover matching power ups [1], and receive the power ups that you successfully uncover — but there are only 8 possible boards, so it’s way easier vs. this Codenames cheat.
Even if this is not technically considered cheating, it definitely would feel like cheating, since again you need to have knowledge of most of the spymaster cards. (And it goes without saying, this is definitely against the spirit of the game, even if it’s a neat party trick.)
After some failed experiments - it performed worse than I thought it will - I've googled the subject, and... it turns out there's a whole paper about ML and codenames :)
https://arxiv.org/abs/2105.05885 (Playing Codenames with Language Graphs and Word Embeddings) - fun to read
From that point of view I don't see a serious problem with embracing the game pieces provided and taking them into consideration. It is a dimension in the game. It does not kill the game. Solid thinking from that team.
I have more of a problem with people learning word lists for Scrabble. It's not against the rules - but it makes it hard to play with these people. It's a significant class difference.
Memorizing the spymaster layouts was almost certainly not intended by the designers of Codenames. Probably someone realized it was possible, but as other commenters mention the increased friction of fully randomized layouts isn't worth it when almost no one will want to do this.
What I mean by there not being a game to it is that there's no winning or losing, or even evaluating success. Everyone gives their best clues (by some metric; sometimes people optimize for fun rather than clarity), you solve the boards and get a score, but the score is totally meaningless. It can't even be compared across sessions.
It turns out to be quite hard to add a game into it. I thought about the problem for a year before deciding that there was no viable way to do it within the constraints of the physical game, and it'd need to be online. For the last few weeks I've been working on an async online word-game inspired by So Clover, where one of the tihngs I wanted to do was to add an actual game (as a competitive mode), and so far the feedback from my playtesters has been that they're not interested in any of those plans, and just want to use it as a chill word game sandbox and share puzzle links over WhatsApp. (The site isn't ready for public consumption, but if anyone here wants to try the game out with some friends, hit me up with an email and I'll send you a link. Contact details in HN profile.)
Thanks for trying Storytell for coding work, Dan!
When you say it "I don't think it took too much longer to get working code than it would've taken if I just coded up the entire thing by hand with no assistance. I'm going to guess that it took about twice as long, but for all I know it was a comparable amount of time." → I'm actually amazed that it performed as well as it did for native code generation.
We put code generation in the "Use with Caution" bucket as I describe in https://web.storytell.ai/blog/the-intersection-of-ai-curious...
I liked the Mastodon thread linked from the appendix, re Dave Sirlin's theory of "scrubs" (who'd eschew the post's geometric tactic) versus "good players": https://mastodon.social/@danluu/110544419353766175
Which in turn links to the original imgur post describing the Warhammer 40K match between Wheels and Shooter: https://imgur.com/a/V0gND
+1 to nemetroid's recommendation of "So Clover," which is indeed more of a pastime than a game, but it's still great and belongs on any list of great word games.
I also like "Contact," which is playable without any props: https://quuxplusone.github.io/blog/2021/11/12/contact/
Like, suppose the word is WINDOW. They'd be like, "Um... house. [long pause] Grass, sky. Glass! Um... [long pause] see? Eye look at?" And I'd be like, "This is a thing in the wall of a house. You can see through it. It's made out of glass. Um... it has panes, and a sill. It might have drapes next to it. You go to it when you want to see out of the house, but it's not the door. A thief might come in through it," etc. etc.
Once you realize you can just say whatever you like (as long as it's in words of one syllable), it seems like the whole game is "cooked." Even with a group of uniformly competent players, I feel like it would just devolve into listening very carefully to a rapid-fire stream of words to try to detect any slips — i.e. real-time proofreading — which to me doesn't count as an enjoyable way to spend a game night.
But it does mean that defeating the bot would only mean creating a custom grid, which sounds very practical virtually, and possible (but harder) in person.
- You can generate grids on multiple devices with a seed
- If the phone displaying the grid falls over, it automatically hides the grid.
I don't know if the grids in the app are truly random or if they follow some constraints though.
What about having 25 scrabble-like squares in a bag, and the spymasters pick randomly in the bag. Each square has a number from 1 to 25 that correspond to one position on the 5x5 grid, and one extra square is chosen to be the black square and shown to the spymasters. The spymasters have a pen and a piece of paper with a 5x5 grid where they can mark the information they receive.
(that is if the spymasters are not informed of the position for the other team, I'm not sure if it's the case or not in the real game. If not, it's even simpler: both spymasters look at the result of every pick, the squares are colored and the order in which they are picked is the order they are on the grid)
Note that the game already comes with 25 colored tiles (red / blue / white) which are used to cover the game board, so what you describe could be easily done with the existing game by putting those 25 tiles in a bag, shaking it, and having the spymasters secretly draw all 25 and fill in a grid in the order they draw them, and then proceed with the game as normal from there. I doubt many people would want to bother though.
> that is if the spymasters are not informed of the position for the other team
The spymasters both know all information, so it is indeed even simpler.
(Add another red marble if you want to alternate the starting team without switching their color and remove a red or blue marble each time.)
For completeness, I wondered how many cards would be required to give the complete set of patterns.
If we number the positions in the 5x5 grid such that the top row has positions 1-5, the second row has 6-10 and so on, the grid positions can be converted to a sequence and we can use the permutation formula to find the number of arrangements. To account for rotations, we can divide the final value by 4 since every arrangement can be rotated and is therefore valid.
Of the 25 cards, there are 7 white, 8 red, 8 blue, 1 black and 1 double agent that can be red or blue, also deciding which team goes first. We can treat this final card as one of a kind, then double the formula output to account for cases where it is swapped to the other team.
Permutations of a multiset has a standard formula [0] that calculates a result from these values (rolling in the double agent factor of 2 and rotation division factor of 4):
25! / (7!8!8!1!1! * 2) = 946,551,177,000
(edit: as pointed out, this is 9 times too large as the double agent can indistinguishably replace each of the other 8 cards - a corrected value is 105,172,353,000)
This is (edit: still) more layout cards than have ever been printed across all production runs of Codenames, and would probably not fit into the current box size.
[0] https://en.wikipedia.org/wiki/Multinomial_theorem#Number_of_...
Good test for an IC that wants to jump to a manager, cross-team or especially sales role. Believe me, you don’t close deals by dunking on your prospects.
But it's very similar to chess, where positional sense is crucial
Imagine you have a Codenames board and you're on the blue team. The key is that you can represent the board as a text of 1s and 0s, where 1 is blue and 0 is not blue:
0 1 0 0 1
0 0 0 0 1
1 1 0 0 0
1 0 0 0 1
0 0 1 0 0
The next key is to realize that each sequence of 4 cards can be thought of as a 4-digit binary number, for example the first binary sequence above is "0100", or 4. The second binary sequence is "1000", or 8.
The strategy is to simply communicate the numbers 4 and 8 to your team—so we can simply choose a word that starts with the 4th letter of the alphabet (d) and ends in the 8th letter of the alphabet (h). If we tell our team "ditch", they'll know exactly what the first 8 cards are.
Repeat this for 3 turns, and your team has figured out 8 cards each turn, for a total of 24 cards out of 25 total. The final card can be inferred simply—on the third turn, if any card is unaccounted for, your team knows it must be in the 25th position.
I just hope your teammates know how to count in binary.
(N.B. the strategy can be optimized by eliminating less-common letters of the English alphabet, like J, where it may be difficult to think of words that end in that letter)
I quote:
> Your clue must be about the meaning of the words. You can't use your clue to talk about the letters in a word or its position on the table.
You're talking about cluing about the position, so it's against the rules.
I guess the rules do also say:
> But if no one notices that a clue is invalid, it counts as valid.
which kinda maybe makes it legal, but it seems like it's quite against the spirit of the rules, and the "invalid" clue thing there is just stuff like "accidentally used a word that's a part of a compound word on the board", not maliciously trying to cheat the rules.
I'm sure with more modern embeddings/tools one could make a really excellent not.
This is the most frustrating part of Scrabble to me. I consider my vocabulary to be pretty good. But frequently when I try to use an even slightly-esoteric word in scrabble, it turns out to not be in the official dictionary. And conversely, the official dictionary is full of words I've never heard or seen used by real people and often has some definition like "18th century slang for <word>". I then lose to people who know all these weird words (especially the very short ones, which they've memorized) and who admit they have never heard these words outside a scrabble context either.
In short, the English the players speak and the English defined by the official dictionary are different enough languages that it seems only useful as a way to learn "Scrabble English" and not modern English.
I was thinking more of remembering that the layouts have basic characteristics: a team's words are not bunched on one side, or all lined up, or in a circle, etc. Not your team's, not the other team's.
But now that you mention it, fully randomized would be easy to do as a phone app. And a phone could be propped up in front of the spymasters. (The setup with the layout propped in front of the spymasters works really well in a party setting, where it's normal that some people will get up and walk around without wanting to cheat.)
Note that this is only approximately correct, since some layouts will have nontrivial symmetries. (Edit: Actually no they won't due to parity reasons! Oops. So that step is exact after all.)
Edit: Actually, this isn't correct either, and in a more serious way:
> Of the 25 cards, there are 7 white, 8 red, 8 blue, 1 black and 1 double agent that can be red or blue, also deciding which team goes first. We can treat this final card as one of a kind, then double the formula output to account for cases where it is swapped to the other team.
On the layout cards, nothing distinguishes the double agent -- the double agent is purely a matter of representation, it's not part of the actual layout. So doing things this way will give you a number that's too large by a factor of about 8 or 9.
What you want to do here (ignoring rotations) is take 25!/(9!8!7!) to get the count with 9 red and 8 blue, then double it to include the count with 8 red and 9 blue, then divide by 4 to account for rotation (contrary to what I said earlier no need to account for symmetries because the numbers mean that none of the layouts can be rotationally symmetric), so you get a total of
25!/(9!8!7!2) = 105,172,353,000
So yeah about 9 times smaller than what you wrote. For what it's worth, anyway. :P
Can you elaborate? I think I can construct some boards that effectively have complete rotational symmetry.
For the purposes of the game, black can be thought of as another white card (since you will never reveal it in the middle of a round), and the double agent can be placed in the center. Then, you just need to place the remaining categories with rotational symmetry (e.g. red on the two main diagonals, and blue on the squares directly clockwise from those). So, for instance:
RBwwR
wRBRB
wBdBw
BRBRw
RwwBR
(w)hite and (d)ouble-agent are in lowercase; feel free to replace any single white square with blAck (Assassin).This is great news for my proposed box redesign!
I should have said "picking phase", but from my example, you should have been able to see that I knew it was about memorizing the boards.
I feel like you've taken an intentionally negative reading of my comment, which I suppose fair's fair because I wasn't exactly being charitable to my parent comment either.
From the perspective of a player who is memorizing boards, it's beneficial to know which square is black, so as the memorizer's adversary it's probably best to put the black square in all 8 non-blue non-red squares for a given layout of blue and red squares.
It's not difficult to be adversarial against the proposed naive strategy (just generate boards with enough overlap such that you can't uniquely identify them from such a small number of revealed squares), but it's easiest to generate fully random boards (without any concerns for "weird" boards) and be done with it.
I do agree that there's an implicit intention in the rules that the operative's guesses are related to the spymaster's hints, but I don't think that relation is ever said explicitly.
A common pattern in our play groups is when the other team is just 1 away from winning and you cannot find a clue that covers all your remaining words, you come up with the best clue you can and say "99" so that it's clear "The number is irrelevant to the clue here, just keep guessing until you win or you miss."
Edit: I'm wrong. From the rules: "If 0 is the number, the usual limit on guesses does not apply. Field operatives can guess as many words as they want. They still must guess at least one word."
Edit2: And instead of 99, my play groups should have been using "unlimited." Again from the rules: "Sometimes you may have multiple unguessed words related to clues from the previous rounds. If you want your team to guess more than one of them, you may say unlimited instead of a number. For example feathers: unlimited."