A project I did for Declarative Programming, you pick any number of random cards, then it will try to guess them in the least number of guesses it can.