Was supposed to just be a small project, and it did only take like a day, but I was surprised. Expected it to be "Intro CS" difficulty, and then I ended up having to implement Perfect Subset Sum using dynamic programming because I wanted to implement it more generally.
I implemented a really basic Card class and a Deck class using the Card class. If this was actually for something where I cared a lot about speed, I probably would have just found someone else's implementation, but figured since it was just for practice, might as well put in the time.
The purpose is to be able to take a cribbage hand, and it will tell you the best cards to discard, given that a different random card will be cut from the deck. The "improvement.ipynb" just shows some box plots on how many more points you get on a random sample of 500 cribbage hands.