[ ] Remove symmetries based on placements - Although we use orientation to reduce symmetries, translations may also be used. For example, this puzzle will still result in multiple solutions, but we could potentially fix that if we fix the symmetry breaker piece in one place as well as one orientation:
AAB
AAB
AAB
In addition, the amount a symmetry breaker piece reduces the solution space is currently only calculated based on the amount of orientations reduced, not the amount of placements reduced including translations.
[ ] Ability to break symmetry with more than one piece if needed (this may be out of scope of this issue and moved to a new one)
[ ] Ability to break symmetry even if all pieces have a range or min=0
Warning: unfiltered brain-dump: I'm not entirely sure how to implement this, but I think it can be done. Imagine splitting the full assembly problem into multiple non-overlapping sub-problems, each which can have reduced symmetry. Currently we only consider a piece as a symmetry breaker if it has exactly min=1 max=1, but if it has min>0 then we can make a sub-problem where the first instance of that piece is fixed. The trick will be to make the sub-problems non-overlapping. If every piece has min=0, then we need a sub-problem for each piece.
[x] #87
[ ] Remove symmetries based on placements - Although we use orientation to reduce symmetries, translations may also be used. For example, this puzzle will still result in multiple solutions, but we could potentially fix that if we fix the symmetry breaker piece in one place as well as one orientation:
AAB AAB AAB
[ ] Ability to break symmetry with more than one piece if needed (this may be out of scope of this issue and moved to a new one)
[ ] Ability to break symmetry even if all pieces have a range or min=0