  A card guessing game is played between two players, Guesser and Dealer. At
the beginning of the game, the Dealer holds a deck of $n$ cards (labeled $1,
..., n$). For $n$ turns, the Dealer draws a card from the deck, the Guesser
guesses which card was drawn, and then the card is discarded from the deck. The
Guesser receives a point for each correctly guessed card. With perfect memory,
a Guesser can keep track of all cards that were played so far and pick at
random a card that has not appeared so far, yielding in expectation $\ln n$
correct guesses. With no memory, the best a Guesser can do will result in a
single guess in expectation. We consider the case of a memory bounded Guesser
that has $m < n$ memory bits. We show that the performance of such a memory
bounded Guesser depends much on the behavior of the Dealer. In more detail, we
show that there is a gap between the static case, where the Dealer draws cards
from a properly shuffled deck or a prearranged one, and the adaptive case,
where the Dealer draws cards thoughtfully, in an adversarial manner.
Specifically:
  1. We show a Guesser with $O(\log^2 n)$ memory bits that scores a near
optimal result against any static Dealer.
  2. We show that no Guesser with $m$ bits of memory can score better than
$O(\sqrt{m})$ correct guesses, thus, no Guesser can score better than $\min
\{\sqrt{m}, \ln n\}$, i.e., the above Guesser is optimal.
  3. We show an efficient adaptive Dealer against which no Guesser with $m$
memory bits can make more than $\ln m + 2 \ln \log n + O(1)$ correct guesses in
expectation.
  These results are (almost) tight, and we prove them using compression
arguments that harness the guessing strategy for encoding.
