finished writing solution, note my solution allows for duplicate cards in hand because of joker replacement, this meant I had to rewrite some of the tests