Every time I play a casual cash poker game with friends, we spend the first several minutes struggling to figure out chip denominations. I built this to automate that process.
Try it out here (the submitted link goes to the GitHub repo): https://jstrieb.github.io/poker-chipper/
It turns out that picking chip denominations optimally—such that as many chips are distributed as possible, and such that the denominations are nice—is hard (in the computational complexity sense). Upon reflection, the problem seemed to be a perfect fit for constrained optimization.
I first got a CLI prototype working with Z3 (an SMT solver with optimization capabilities https://github.com/Z3Prover/z3) in Python. Then, I cross-compiled SCIP (https://www.scipopt.org/) to web assembly, and ported my code to use SCIP instead of Z3 so it could run in the browser.
The web interface is designed to be fast and easy to use on desktop and mobile.
I would love to answer questions and discuss design choices. I'm also open to feedback and bug reports. Thanks for taking a look!
If you have a set with 100x of white, blue, red, green, etc... your total number of chips used for 8 players is: 96x white (25c) 96x blue ($1) 8x red ($5)
If players lose all of their chips... they can re-buy with $5 (red) chips and make change from the players that have all of the lower denomination chips.
What I have proposed above is a proper solution if you want to play poker.