We have been playing Rummikub together for a while now and one day we had the idea to try and create a solver for the game in python to see how complicated it would be, so that is what we did!
What it does
Fully functional Rummikub game that is able to be solved with an algorithm at point in the game. You are also able to input custom boards and hands and then can use the solving algorithms on them. For more details see README.md on GitHub.
How we built it
Distributed tasks to each team member, and had them come up with a solution. If anyone got stuck we worked together to solve the problems.
Challenges we ran into
Jokers created many issues in the logic of the game. Running checks for valid sets and runs were very complicated because of the logic needed to account for jokers. Creating the solving algorithms was complicated further due to joker logic adding many edge cases that the solving algorithms had to account for. We tried to account for as many of the edge cases as possible, but there may be some that we missed.
Accomplishments that we're proud of
The game works very well, it emulates Rummikub perfectly. We were able to play a full game together after creating the game the first night of the competition. The solving algorithms are very cool and complex
What we learned
How to use try-except blocks, how to add color to terminal text, and how to create solving algorithms using combination generators and complicated game logic.
What's next for Rummikub-Solver
Eventually, we need to add a GUI, check for more edge cases in the solving algorithms, try to add a third solving algorithm using ILP, and make our code style more consistent.