I just purchased the game Spot It. As per this site, the structure of the game is as follows:

Game has 55 round playing cards. Each card has eight randomly placed symbols. There are a total of 50 different symbols through the deck. The most fascinating feature of this game is any two cards selected will always have ONE (and only one) matching symbol to be found on both cards.

Is there a formula you can use to create a derivative of this game with different numbers of symbols displayed on each card.

Assuming the following variables:

  • S = total number of symbols
  • C = total number of cards
  • N = number of symbols per card

Can you mathematically demonstrate the minimum number of cards (C) and symbols (S) you need based on the number of symbols per card (N)?


The celebrated Ray-Chaudhuri–Wilson theorem states that $C \leq S$, contradicting your numbers.

An almost matching construction is as follows. Pick some prime number $n$. Our universe, of size $n^2+n+1$, consists of pairs of numbers in $\{0,\ldots,n-1\}$ plus $n+1$ singletons $\{0,1,\ldots,n-1,\infty\}$ ("points at infinity"). For each $0 \leq a \leq n-1$ and $0 \leq b \leq n-1$ we will have a card of size $n+1$ containing the pairs $\{(x,ax+b \mod{n})\}$ and the singleton $a$. There are also $n$ special cards, for each $0 \leq c \leq n-1$, containing the pairs $\{(c,x)\}$ and the singleton $\infty$. One super special card contains all $n+1$ singletons.

Clearly two cards with the same $a$ intersect only at the singleton. Two cards with different $a$s intersect at the unique solution to $a_1x+b_1 = a_2x+b_2 \pmod{n}$. Two special cards intersect only at the singleton, and a normal and a special card intersect at $(c,ac+b)$. Finally, the super special card intersects the rest at a singleton.

In total, we have $n^2+n+1$ cards and symbols, each card containing $n+1$ symbols, and two cards intersecting at exactly one symbol. In your case $n=7$ and so the number of cards and symbols should be $7^2+7+1 = 57$.

  • 1
    $\begingroup$ But does this tell you the fewest number of cards and symbols necessary? For example, with 3 symbols per card (n=2) the math suggests 7 symbols and 7 cards. But, the fewest numbers seem to be 6 symbols and 4 cards: symbols [a,b,c,d,e,f]; cards [abc, cde, eaf, bdf]. $\endgroup$ – Javid Jamae May 4 '11 at 14:43
  • 1
    $\begingroup$ You're right that the Ray-Chaudhury-Wilson theorem provides only one constraint on possible games. There may be other known results in the area. The corresponding mathematical subject is combinatorial block design, and I don't think they have it all figured out. $\endgroup$ – Yuval Filmus May 4 '11 at 15:31
  • 2
    $\begingroup$ You're right and the actual game shows that well: as the French article I quote explains, the cards in Spot It are the elements of the projective plane over the field with seven elements (which is a very elegant 57-point 57-line design) with two points removed. So it's now a 55-point 57-line system of much less (mathematical) interest. But for the game, these considerations are rather irrelevant: the symmetry of the configuration plays no role (it's just desirable to keep the number of symbols to a reasonable amount). $\endgroup$ – PseudoNeo May 5 '11 at 23:53
  • 1
    $\begingroup$ @ypercube: Should work for every prime power (if you use finite field arithmetic), see en.wikipedia.org/wiki/Projective_plane#Combinatorial_definition. $\endgroup$ – Yuval Filmus Jun 7 '11 at 14:13
  • 3
    $\begingroup$ So this means there are two more possible cards with the given $S$ and $C$ of the game (the deck only has 55 cards). I wonder why the creators of SpotIt left out 2 cards. $\endgroup$ – FreshAir May 10 '15 at 22:21

Here's an article (in French) that aims to explain the mathematics behind the game to a wide audience.

In the interest of link rot prevention, here are two diagrams from the article that may be of interest even to non-French speakers:

enter image description here

enter image description here

  • $\begingroup$ Okay, now this is epic. $\endgroup$ – Xandawesome Oct 29 '18 at 23:11
  • $\begingroup$ These pictures are worth a thousand words, in whatever language you speak. $\endgroup$ – Chas Brown Dec 28 '19 at 4:55
  • $\begingroup$ oh a Fano plane, is it? $\endgroup$ – Alvin Lepik Feb 10 '20 at 15:28

I came to the conclusion it must be $57$ or more symbols the following simple way: the total number of symbols shown on all cards is $55\times8=440$. If it was $50$ different symbols only, each must be shown $440:50=8.8$ times, i.e. some at least $9$ times.

If you took the $9$ cards with one common symbol, all the other symbols would need to be different, i.e. you'd need $(8-1)\times9+1=64$ different symbols.

If we reduce the max. usage per symbol to $8$, you only need $(8-1)\times8+1=57$ Symbols. As $57\times8=456$, this also exceeds the #of symbols shown thus being a valid solution.

To be able to use fewer symbols (e.g. $56$), usage per symbol would require reduction to 7 per (each individual) symbol, which would limit the no. of cards to $56\times7:8=49$.

Thus, with $55$ cards, the minimum number of different symbols is $57$.

  • 2
    $\begingroup$ But the game has 55 cards and only 50 different symbols! $\endgroup$ – mirams Dec 13 '15 at 19:07
  • 2
    $\begingroup$ @mirams, this answer proves mathematically that the description given in the question is impossible. Either the game designers made a mistake and some cards have more than one symbol in common, or, far more likely, the author of the description on the quoted web page made a mistake in tallying how many symbols there are. $\endgroup$ – Wildcard Jun 1 '17 at 23:06
  • 2
    $\begingroup$ There are 57 symbols total. I catalogued them. $\endgroup$ – Greg Bell Feb 13 '18 at 9:10

I have the game myself. I took the time to count out the appearance frequency of each object for each card. There are 55 cards, 57 objects, 8 per card. The interesting thing to me is that each object does not appear in equal frequency with others ... the minimum is 6, max 10, and mean 7.719. I am left curious why the makers of Spot It decided to take this approach. Apparently they favor the clover leaf over the flower, maple leaf, or snow man.

  • 1
    $\begingroup$ As I understand it, the max is actually 8. what symbol appears on 10 cards? (I can't find the reference right now, but there should be 57 cards in a "complete" set. For production cost reasons, Blue Orange only prints 55 cards.) $\endgroup$ – Vynce Jul 28 '15 at 2:18
  • $\begingroup$ @Vynce is right; also see this answer. If any symbol is shown even 9 times (let alone 10), that leaves 7 additional symbols on each of 9 cards which must all be unique, plus the single symbol shown 9 times for a total of at least 64 distinct symbols. So you must have counted something wrong: with 57 symbols each symbol can be used a maximum of 8 times. $\endgroup$ – Wildcard Jun 1 '17 at 23:09
  • $\begingroup$ Furthermore, according to the French article images.math.cnrs.fr/Dobble-et-la-geometrie-finie.html?lang=fr, if there were 57 cards in dobble, all symbols should occur the same number of times (8 times). With two cards missing, at least six symbols should occur exactly 8 times. $\endgroup$ – Fabian Ying Jul 9 '18 at 9:27

$n^2 -n + 1$ where $n$ is the number of images.

This is the simplest formula to arrive at the number of both individual symbols and total number of cards required to display them (these are the same).

I derived this formula logically but not necessarily mathematically as follows:

I picked a random card and focused on a single image. Assuming eight images per card as are found in this game, this image can only be found $8$ times, once on the card you're holding and $7$ more times.

The same holds true for the next image. It can only appear $8$ times if it to remain unique - once on the card you are holding and once over each of $7$ more cards.

I noticed the trend. Each image appears once on the card you're holding and requires $7$ more cards. So, you need the 1 card you are holding and 7 more per image. Mathematically, I guess that's: $1 \text{card} + (7\text{cards}\times 8\text{images})$. That's $1+(7\times8)$ or $1+56 = 57.$

Logical, so far.

Then, I ran the same logic and considered a card with only $4$ images. Each card would require one base card and $3$ additional cards per image. Mathematically, that would be $1+ (3x4)$. That's $1+12$ or $13$ cards.

Then, I tried to tie these observations together. I asked myself "Is there a formula that would arrive at the right answer no matter the number of images?" The answer is yes.

I remembered that in the examples above I started with 1 card then added (one less than the number of images) $\times$ (the number of images). That's $1+ (n-1)(n)$ if $n$ is the number of images. Then I just kinda rearranged a little:
$$\begin{eqnarray*}1+ (n-1)(n) \\ 1+ (n)(n) - n \\ 1+ n^2 - n \\ n^2 - n + 1 \end{eqnarray*}$$

I tested it and it works out every time. I was very happy before I got yelled at by my wife for taking so long on the computer.

  • $\begingroup$ The logic breaks down in your first sentence following the colon. You can indeed have a symbol shown more than 8 times if you have at least 64 distinct symbols total. $\endgroup$ – Wildcard Jun 1 '17 at 23:11
  • $\begingroup$ This is the same logic I used to solve the problem! Makes sense! $\endgroup$ – Scott Rippey May 14 '19 at 20:03

Here's my explanation for the algorithm for making the cards.

We can describe the cards as a matrix, with a row for each card and a column for each symbol. A cell will have a 1 if the card corresponding to the row has the symbol corresponding to the column, and 0 otherwise.

It turns out that for each prime number $p$ we can create such a solution, with $p^2+p+1$ cards and a total of $p^2+p+1$ symbols, with $p+1$ symbols on each card. The Dobble game has $p=7$, which gives 57 cards and 57 symbols with 8 symbols in each card. Here is the matrix for $p=5$, meaning there are 31 cards with 6 symbols in each:

matrix for p=5

Here's Python code for producing this solution:

def dobble(p):
    cards = [[] for i in range(p**2 + p + 1)]
    for i in range(p+1):
        for j in range(p):
            cards[1 + i*p + j].append(i)
            cards[i].append(1 + i*p + j)
    for i in range(p):
        for j in range(p):
            for k in range(p):
                cards[1 + p + i*p + k].append(1 + p + j*p + (i*j - k) % p)
    return cards

from itertools import combinations
for card0, card1 in combinations(dobble(7), 2):
    assert len(set(card0) & set(card1)) == 1

The matrices $C_{ij}$ are all permutation matrices, that is, each row and each column have exactly one 1. They are all just a cyclically shifted reverse-diagonal, with the diagonal shifted by $ij \mod p$.

It is quite quite easy to see that any two rows have exactly one column with a common 1, except for two rows that come from different rows in the large matrix of matrices. Let's see why they have exactly one common column.

A matrix $C_{ij}$ has a 1 in position $k,l$ if $ij = k + l$. All the arithmetic is done modulu $p$. The first row can be described by $i_0$ and $k_0$ (k is the row in the $C_{i_0}j$ matrices), and the second row by $i_1$ and $k_1$. Since we come from different rows in the large matrix, $i_0 \ne i_1$. A column is described by $j$ and $l$. If both rows have a 1 in the column, it means that:

  1. $i_0 j = k_0 + l$
  2. $i_1 j = k_1 + l$

Subtracting the equations gives us:

$(i_1 - i_0)j = k_1 - k_0$

Now, since $p$ is prime, and $i_0 \ne i_1$, we can solve this equation, and get a single result for $j$, namely

$j = (k_1 - k_0)(i_1 - i_0)^{-1}$

which we can put back in equation 1 to get $l$. So there is exactly one column which has 1 in both rows.

So, thanks to the integers modulu $p$ being a field, we have exactly one symbol which appears in each pair of cards.


  1. This would have also worked with regular diagonals, but this way the matrix is symmetric.
  2. I based my understanding on Paige L.J., Wexler Ch., A Canonical Form for Incidence Matrices of Projective Planes, which was referenced in this answer to a related question.
  3. The code for generating the figure is here.
  • $\begingroup$ Why isn't this working if p is not prime? $\endgroup$ – DPF Aug 18 '20 at 15:21
  • $\begingroup$ @DPF if p is not prime you can't always divide - there's no x^-1. For example, if p = 4, there's no 2^-1 - there's no x such that 2*x = 1 (mod 4). We depend on there being exactly one solution for (i_1-i_0)*j=k_1-k_0. $\endgroup$ – Noam Aug 19 '20 at 5:01
  • $\begingroup$ OK, so this means that for non prime p there are not no solutions but too many, and because of that the algorithm fails? I'm trying to find an algorithm for non prime p... $\endgroup$ – DPF Aug 20 '20 at 6:33
  • $\begingroup$ @DPF perhaps p doesn't have to be prime. In the article I mentioned in note 2, it doesn't say that it must be prime. $\endgroup$ – Noam Aug 20 '20 at 11:41

Here's what I think is a more intuitive way to reach same result:

let: p = icons per card t = total number of unique icons in the system n = total possible cards in the system r = total times/cards every icon appears in.

take the case of p=3: all possible cards (every line is a possible card): A|B|C A|D|E B|D|F C|D|G


The first batch of 4 cards is the core because: I. We took the first 3 icons from first card (A|B|C). II. To create more possible cards, we introduced the fourth icon D to each one of the icons in the first card. III. we filled the other positions with new icons (E, F & G)

We now see that it is impossible to introduce any new icon to the system, as it will not be able to have exactly 1 common icon with EVERY other card.

So the first 4 cards determines 't' - the total # of unique icons in the system. The other 3 cards are merely the remaining permutations. We also learn that r = p, and n = t.

To determine t we take the first matrix (excluding the first card) and see that the # of unique icons in the system is p square minus p + 1. When p = 3 → t = n = 7 When p= 8 (as in the game) → t=n=57. in the game they used only 55 cards, I guess simply because its a cleaner number.


N squared minus N + 1 is the correct formula for calculating both the number of images and the number of cards. Here is the specification for generating the cards themselves: Below are the specifications for generating each card of Spot-it. Although the commercial Spot-it game contains 8 symbols per card, these specifications work for any desired number of symbols/card. The rules are that every card contains one and only one symbol matching every other card. Also, all symbols have an equal probability of being the matching symbol.

Let N = number of symbols per card Let C = the total number of symbols as well as the total number of cards to be generated. Then C = N2 – N + 1

Generate a matrix with N columns and C rows Column 1: Symbol 1 for N rows Symbol 2 for N-1 rows . . . Symbol N for N-1 rows Column 2: Row 1 = Symbol (Column #) Row 2 = Symbol N+1 Row 3 = Symbol 2N Row 4 = Symbol 3N-1 Row 5 = Symbol 4N-2 Etc. through row 2N-1 Repeat above rows N-2 times Column 3: Row 1: Symbol (Column #) Row 2: Previous column Row 2 plus 1 Row 3: Previous column Row 3 plus 1 Etc. through row 2N-1 Repeat above rows N-2 times Column 4: Same as Column 3 . . . Column N

The Spot-it Cards are the Rows


Not the answer you're looking for? Browse other questions tagged or ask your own question.