(Ava, Bob) -> (B, B), (B, R), (R, B), (R, R)
It's easy to see that there are only two alternatives: they either both have the same suit or they have different suits. Luckily, there are two players, and so they can try both options simultaneously.
The same thing works in the 4-player case. You can try 4 strategies at once, is there any way to somehow reduce the state space to 4 options?
If you give every suit a number from 0-3, then the sum of all the suits is obviously going to be somewhere between 0-3 modulo 4.
So in the first case where there are only 2 people and 2 colours, they assign, say 0 to black and 1 to red. Then they each sum up the other choices they can see (which happens to be only one other choice in this case) plus their own assigned number (0 or 1) and answer that modulo 2.
Er..I think...?
Edit: I should've read your answer more carefully.
Seeing the others' answers I don't think matters in this solution.
The strategy -- given that it's allowable to discuss strategy before drawing cards -- is each person has a different modulo result (x) they have to compute the number they must add [to the sum of the other three], (m) in the following algebra. Solve for m to get the suit your should guess.
x = ([sum of others] + m) % 4
Suits: 0: Diamond 1: Heart 2: Club 3: Spade
Example: [PLAYER]: (SUIT THEY HAVE), (CHOSEN MODULO RESULT) A: (0) (0) B: (1) (1) C: (3) (2) D: (3) (3)
For A's m: ((1 + 3 + 3) + m) % 4 == 0, therefore m = 1 For B's m: ((0 + 3 + 3) + m) % 4 == 1, therefore m = 3 For C's m: ((0 + 1 + 3) + m) % 4 == 2, therefore m = 2 For D's m: ((0 + 1 + 3) + m) % 4 == 3, therefore m = 3
D guesses correct.
There are many permutations of the drawn cards, but I think this one does solve it. All props to the person up this thread who initially answered the 4-player problem; I'm just explaining their methodology as I understood it.
A sees 1+0+1 -> guesses (2+0)%4 = 2 (wrong)
B sees 0+0+1 -> guesses (1+1)%4 = 2 (wrong)
C sees 1+0+1 -> guesses (2+2)%4 = 0 (wrong)
C sees 0+1+0 -> guesses (1+3)%4 = 0 (wrong)
EDIT: This is twice incorrect, as indicated below.
2. C correctly guesses 0 in your example.
im4w1l's strategy is just:
Player i returns (i - [Sum of the other players' suits]) % 4
(With i ranging from 0 to 3)
You know, solve for `m`, etc.
I've tried my best to illustrate why this is the correct solution in the url above.
Long story short:
Call S to the sum of all the numbers on the hats of every player. The sum of all the numbers a player can see will be less than S but the difference with S will be less than "n - 1". Also the difference between the largest guess(for the sum of all the hats) and S won't be larger than "n - 1".
There is now a problem, we want a set of guesses with a size no larger than "n" but in reality it can be as large as size "2(n - 1) + 1 = 2n - 1". Taking the set of possible rational guesses modulo "n" creates a collision, now some guesses will share the same remainder modulo n. However because no guess can be farther than "n - 1" with respect to S, the set of guesses modulo "n" won't create that collision for "S mod n". Any player that was told to make the remainder of the total sum mod n equal to "S mod n" will always have the correct answer.
If you want to think visually imagine the modular clock for "n" which has "S mod n" as the reference point. Because no other point can't be farther apart than "n - 1" distance from S, only S can give the remainder "S mod n". If there are "n" players and we assign each one a different remainder "mod n", one of them will have the correct answer for sure.