Starting in Python 3.7, the module dataclasses introduces a decorator that allows us to create immutable structures (like tuples) but with their own batteries-included methods. I wanted to give dataclasses a try with some non-trivial workloads. Having always been interested the coin change problem where the solution involves dynamic programming, this seemed to be a good test of dataclasses.
Instead of the classic coin change problem (finding the minimum number of coins that add up to a given amount), however, here I want to keep track of all possible combinations.