multi-puzzle-solver 0.9.30__py3-none-any.whl → 0.9.31__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of multi-puzzle-solver might be problematic. Click here for more details.

@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: multi-puzzle-solver
3
- Version: 0.9.30
3
+ Version: 0.9.31
4
4
  Summary: Efficient solvers for numerous popular and esoteric logic puzzles using CP-SAT
5
5
  Author: Ar-Kareem
6
6
  Project-URL: Homepage, https://github.com/Ar-Kareem/puzzle_solver
@@ -4631,108 +4631,109 @@ solutions = binst.solve_and_print()
4631
4631
  ```python
4632
4632
  Solution found
4633
4633
  ┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐
4634
- /│\ │ │██████│ │ /│\ │ │██████│██████│ │ │██████│ /│\ │ │██████│ /│\ │██████│ │██████│ │ /│\
4635
- /███│██\ . │██████│ 1/███│██\ 1 │██████│██████│ . . │██████│ /███│██\ 2 │██████│ /███│██\ │██████│ . │██████│ . /███│██\
4634
+ /█│█\ │ │██████│ │ /█│█\ │ │██████│██████│ │ │██████│ /█│█\ │ │██████│ /█│█\ │██████│ │██████│ │ /█│█\
4635
+ /███│███\ . │██████│ 1 /███│███\ 1 │██████│██████│ . │ . │██████│ /███│███\ 2 │██████│ /███│███\ │██████│ . │██████│ . │ /███│███\
4636
4636
  │/█████│█████\│ │██████│ │/█████│█████\│ │██████│██████│ │ │██████│/█████│█████\│ │██████│/█████│█████\│██████│ │██████│ │/█████│█████\│
4637
4637
  ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
4638
- │\█████│█████/│ /│\ │██████│\█████│█████/│██████│ /│\ │██████│ │██████│\█████│██████│\ │\█████│██████│\ │██████│ /│\ │\█████│█████/│
4639
- \███│██/ /███│██\ │██████│ \███│██/ │██████│ /███│██\ │██████│ . │██████│ \███│██████│██\ . \███│██████│██\ │██████│ /███│██\ \███│██/
4640
- \│/ │/█████│█████\│██████│ \│/ │██████│/█████│█████\│██████│ │██████│ \│██████│█████\│ \│██████│█████\│██████│/█████│█████\│ \│/
4638
+ │\█████│█████/│ /█│█\ │██████│\█████│█████/│██████│ /█│█\ │██████│ │██████│\█████│██████│█\ │\█████│██████│█\ │██████│ /█│█\ │\█████│█████/│
4639
+ \███│███/ /███│███\ │██████│ \███│███/ │██████│ /███│███\ │██████│ . │██████│ \███│██████│███\ .\███│██████│███\ │██████│ /███│███\ \███│███/
4640
+ \█│█/ │/█████│█████\│██████│ \█│█/ │██████│/█████│█████\│██████│ │██████│ \█│██████│█████\│ \█│██████│█████\│██████│/█████│█████\│ \█│█/
4641
4641
  ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
4642
- │██████│ /│██████│██████│\ /│\ │\█████│██████│\ │██████│ /│\ │\█████│██████│\ │ │\█████│█████/│ /│██████│██████│\ │██████│
4643
- │██████│ /███│██████│██████│██\ /███│██\ 3 \███│██████│██\ │██████│ /███│██\ │ \███│██████│██\ 4\███│██//███│██████│██████│██\ │██████│
4644
- │██████│/█████│██████│██████│█████\│/█████│█████\│ │ \│██████│█████\│██████│/█████│█████\│ \│██████│█████\│ \│/ │/█████│██████│██████│█████\│██████│
4642
+ │██████│ /█│██████│██████│█\ /█│█\ │\█████│██████│█\ │██████│ /█│█\ │\█████│██████│█\ │ │\█████│█████/│ /█│██████│██████│█\ │██████│
4643
+ │██████│ /███│██████│██████│███\ /███│███\ 3\███│██████│███\ │██████│ /███│███\\███│██████│███\ 4\███│███/ │ /███│██████│██████│███\ │██████│
4644
+ │██████│/█████│██████│██████│█████\│/█████│█████\│ │ \█│██████│█████\│██████│/█████│█████\│ \█│██████│█████\│ \█│█/ │/█████│██████│██████│█████\│██████│
4645
4645
  ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
4646
- │██████│\█████│██████│██████│█████/│\█████│█████/│ /│\ │\█████│█████/│ │\█████│█████/│██████│\█████│██████│\ │ │██████│\█████│██████│██████│█████/│ │
4647
- │██████│ \███│██████│██████│██/ \███│██/ /███│██\ \███│██/ . \███│██/ │██████│ \███│██████│██\ 3 │██████│ \███│██████│██████│██/ .
4648
- │██████│ \│██████│██████│/ \│/ │/█████│█████\│ \│/ │ │ \│/ │██████│ \│██████│█████\│ │██████│ \│██████│██████│/ │ │
4646
+ │██████│\█████│██████│██████│█████/│\█████│█████/│ /█│█\ │\█████│█████/│ │\█████│█████/│██████│\█████│██████│█\ │ │██████│\█████│██████│██████│█████/│ │
4647
+ │██████│ \███│██████│██████│███/ \███│███/ /███│███\ \███│███/ .\███│███/ │██████│ \███│██████│███\ 3 │██████│ \███│██████│██████│███/ .
4648
+ │██████│ \█│██████│██████│█/ \█│█/ │/█████│█████\│ \█│█/ │ │ \█│█/ │██████│ \█│██████│█████\│ │██████│ \█│██████│██████│█/ │ │
4649
4649
  ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
4650
- │ │██████│\█████│█████/│ /│\ /│██████│█████/│██████│ /│\ /│\ │██████│\█████│█████/│ /│\ │ │\█████│█████/│██████│██████│
4651
- 1 │██████│ \███│██/ /███│██\ /███│██████│██/ │██████│ 2 /███│██\ /███│██\ │██████│ \███│██/ /███│██\ 4 \███│██/ │██████│██████│
4652
- │ │██████│ \│/ │/█████│█████\│/█████│██████│/ │██████│ │/█████│█████\│/█████│█████\│██████│ \│/ │/█████│█████\│ │ \│/ │██████│██████│
4650
+ │ │██████│\█████│█████/│ /█│█\ /█│██████│█████/│██████│ /█│█\ /█│█\ │██████│\█████│█████/│ /█│█\ │ │\█████│█████/│██████│██████│
4651
+ 1 │██████│ \███│███/ /███│███\ /███│██████│███/ │██████│ 2/███│███\ /███│███\ │██████│ \███│███/ /███│███\ 4\███│███/ │██████│██████│
4652
+ │ │██████│ \█│█/ │/█████│█████\│/█████│██████│█/ │██████│ │/█████│█████\│/█████│█████\│██████│ \█│█/ │/█████│█████\│ │ \█│█/ │██████│██████│
4653
4653
  ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
4654
- /│\ │ │██████│\█████│█████/│\█████│█████/│ /│\ │██████│\█████│█████/│\█████│█████/│ /│\ │██████│\█████│█████/│ /│\ │ │ /│\
4655
- /███│██\ 3 │██████│ \███│██/ \███│██/ /███│██\ │██████│ \███│██/ \███│██/ /███│██\ │██████│ \███│██/ │ /███│██\ ./███│██\
4656
- │/█████│█████\│ │██████│ \│/ \│/ │/█████│█████\│██████│ \│/ \│/ │/█████│█████\│██████│ \│/ │/█████│█████\│ │/█████│█████\│
4654
+ /█│█\ │ │██████│\█████│█████/│\█████│█████/│ /█│█\ │██████│\█████│█████/│\█████│█████/│ /█│█\ │██████│\█████│█████/│ /█│█\ │ │ /█│█\
4655
+ /███│███\ 3 │██████│ \███│███/ \███│███/ /███│███\ │██████│ \███│███/ \███│███/ /███│███\ │██████│ \███│███//███│███\ . /███│███\ │
4656
+ │/█████│█████\│ │██████│ \█│█/ \█│█/ │/█████│█████\│██████│ \█│█/ \█│█/ │/█████│█████\│██████│ \█│█/ │/█████│█████\│ │/█████│█████\│
4657
4657
  ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
4658
- │\█████│██████│\ │ │██████│██████│ │ /│██████│██████│\ │ │██████│ │ /│██████│█████/│ /│\ │\█████│██████│\ │\█████│█████/│
4659
- \███│██████│██\ 1 │██████│██████│ 2/███│██████│██████│██\ │ . │██████│ 3/███│██████│██/ . /███│██\ \███│██████│██\ \███│██/
4660
- \│██████│█████\│ │██████│██████│ │/█████│██████│██████│█████\│ │██████│ │/█████│██████│/ │ │/█████│█████\│ \│██████│█████\│ \│/
4658
+ │\█████│██████│█\ │ │██████│██████│ │ /█│██████│██████│█\ │ │██████│ │ /█│██████│█████/│ /█│█\ │\█████│██████│█\ │\█████│█████/│
4659
+ \███│██████│███\ 1 │██████│██████│ 2 /███│██████│██████│███\ . │██████│ 3 /███│██████│███/ ./███│███\\███│██████│███\ \███│███/
4660
+ \█│██████│█████\│ │██████│██████│ │/█████│██████│██████│█████\│ │██████│ │/█████│██████│█/ │ │/█████│█████\│ \█│██████│█████\│ \█│█/
4661
4661
  ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
4662
- │██████│\█████│█████/│ │██████│██████│ │\█████│██████│██████│█████/│██████│ /│\ │\█████│█████/│ │██████│\█████│█████/│ │\█████│█████/│██████│ │
4663
- │██████│ \███│██/ │ . │██████│██████│ . \███│██████│██████│██/ │██████│ /███│██\ \███│██/ 3 │██████│ \███│██/ 4 \███│██/ │██████│ .
4664
- │██████│ \│/ │ │██████│██████│ │ \│██████│██████│/ │██████│/█████│█████\│ \│/ │ │██████│ \│/ │ │ \│/ │██████│ │
4662
+ │██████│\█████│█████/│ │██████│██████│ │\█████│██████│██████│█████/│██████│ /█│█\ │\█████│█████/│ │██████│\█████│█████/│ │\█████│█████/│██████│ │
4663
+ │██████│ \███│███/ . │██████│██████│ . │ \███│██████│██████│███/ │██████│ /███│███\ \███│███/ 3 │██████│ \███│███/ 4\███│███/ │██████│ .
4664
+ │██████│ \█│█/ │ │██████│██████│ │ \█│██████│██████│█/ │██████│/█████│█████\│ \█│█/ │ │██████│ \█│█/ │ │ \█│█/ │██████│ │
4665
4665
  ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
4666
- │██████│ │ │ /│\ │ │██████│██████│\█████│█████/│ │ /│██████│█████/│ │██████│ /│\ /│\ /│\ │ │ /│\
4667
- │██████│ . 2 /███│██\ . │██████│██████│ \███│██/ 3/███│██████│██/ 2 │██████│ /███│██\ /███│██\/███│██\ 4/███│██\
4668
- │██████│ │ │/█████│█████\│ │██████│██████│ \│/ │/█████│██████│/ │ │██████│/█████│█████\│/█████│█████\│/█████│█████\│ │/█████│█████\│
4666
+ │██████│ │ │ /█│█\ │ │██████│██████│\█████│█████/│ │ /█│██████│█████/│ │██████│ /█│█\ /█│█\ /█│█\ │ │ /█│█\
4667
+ │██████│ . │ 2/███│███\ . │██████│██████│ \███│███/ 3/███│██████│███/2 │██████│ /███│███\ /███│███\ /███│███\ 4 /███│███\ │
4668
+ │██████│ │ │/█████│█████\│ │██████│██████│ \█│█/ │/█████│██████│█/ │ │██████│/█████│█████\│/█████│█████\│/█████│█████\│ │/█████│█████\│
4669
4669
  ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
4670
- │ │██████│██████│\█████│█████/│ │██████│██████│ │██████│██████│\█████│█████/│██████│██████│ /│██████│█████/│\█████│█████/│\█████│█████/│ /│██████│█████/│
4671
- . │██████│██████│ \███│██/ . │██████│██████│ 1 │██████│██████│ \███│██/ │██████│██████│ /███│██████│██/ \███│██/ \███│██/ /███│██████│██/
4672
- │ │██████│██████│ \│/ │ │██████│██████│ │██████│██████│ \│/ │██████│██████│/█████│██████│/ \│/ \│/ │/█████│██████│/
4670
+ │ │██████│██████│\█████│█████/│ │██████│██████│ │██████│██████│\█████│█████/│██████│██████│ /█│██████│█████/│\█████│█████/│\█████│█████/│ /█│██████│█████/│
4671
+ . │██████│██████│ \███│███/ . │██████│██████│ 1 │██████│██████│ \███│███/ │██████│██████│ /███│██████│███/ \███│███/ \███│███/ /███│██████│███/
4672
+ │ │██████│██████│ \█│█/ │ │██████│██████│ │██████│██████│ \█│█/ │██████│██████│/█████│██████│█/ \█│█/ \█│█/ │/█████│██████│█/
4673
4673
  ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
4674
- │ │██████│██████│ │ /│\ │██████│██████│ │ /│\ │██████│ │ │ │\█████│█████/│ /│\ │ │██████│ /│██████│█████/│
4675
- 0 │██████│██████│ . /███│██\ │██████│██████│ . /███│██\ │██████│ . . . \███│██//███│██\ 3 │██████│ /███│██████│██/ .
4676
- │ │██████│██████│ │/█████│█████\│██████│██████│ │/█████│█████\│██████│ │ │ │ \│/ │/█████│█████\│ │██████│/█████│██████│/ │ │
4674
+ │ │██████│██████│ │ /█│█\ │██████│██████│ │ /█│█\ │██████│ │ │ │\█████│█████/│ /█│█\ │ │██████│ /█│██████│█████/│
4675
+ 0 │██████│██████│ ./███│███\ │██████│██████│ ./███│███\ │██████│ . │ ..\███│███/ /███│███\ │ 3 │██████│ /███│██████│███/ . │
4676
+ │ │██████│██████│ │/█████│█████\│██████│██████│ │/█████│█████\│██████│ │ │ │ \█│█/ │/█████│█████\│ │██████│/█████│██████│█/ │ │
4677
4677
  ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
4678
- │ │██████│██████│ │\█████│██████│\ │ │ /│██████│█████/│ │██████│ /│\ │██████│ /│██████│██████│\ │██████│\█████│█████/│ │██████│
4679
- 0 │██████│██████│ .\███│██████│██\ ./███│██████│██/ │ 1 │██████│ /███│██\ │██████│ /███│██████│██████│██\ │██████│ \███│██/ 3 │██████│
4680
- │ │██████│██████│ │ \│██████│█████\│ │/█████│██████│/ │ │██████│/█████│█████\│██████│/█████│██████│██████│█████\│██████│ \│/ │ │██████│
4678
+ │ │██████│██████│ │\█████│██████│█\ │ │ /█│██████│█████/│ │██████│ /█│█\ │██████│ /█│██████│██████│█\ │██████│\█████│█████/│ │██████│
4679
+ 0 │██████│██████│ . \███│██████│███\ ./███│██████│███/ 1 │██████│ /███│███\ │██████│ /███│██████│██████│███\ │██████│ \███│███/ 3 │██████│
4680
+ │ │██████│██████│ │ \█│██████│█████\│ │/█████│██████│█/ │ │██████│/█████│█████\│██████│/█████│██████│██████│█████\│██████│ \█│█/ │ │██████│
4681
4681
  ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
4682
- │██████│ /│\ /│\ │\█████│██████│\ │\█████│█████/│ │██████│ │\█████│█████/│ │\█████│██████│██████│██████│\ │ │ /│\ │██████│
4683
- │██████│ /███│██\ /███│██\ \███│██████│██\ \███│██/ 2 │██████│ .\███│██/ .\███│██████│██████│██████│██\ . /███│██\ │██████│
4684
- │██████│/█████│█████\│/█████│█████\│ \│██████│█████\│ \│/ │ │██████│ │ \│/ │ │ \│██████│██████│██████│█████\│ │/█████│█████\│██████│
4682
+ │██████│ /█│█\ /█│█\ │\█████│██████│█\ │\█████│█████/│ │██████│ │\█████│█████/│ │\█████│██████│██████│██████│█\ │ │ /█│█\ │██████│
4683
+ │██████│ /███│███\ /███│███\ \███│██████│███\ \███│███/ 2 │██████│ . \███│███/ .\███│██████│██████│██████│███\ ./███│███\ │██████│
4684
+ │██████│/█████│█████\│/█████│█████\│ \█│██████│█████\│ \█│█/ │ │██████│ │ \█│█/ │ │ \█│██████│██████│██████│█████\│ │/█████│█████\│██████│
4685
4685
  ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
4686
- /│██████│█████/│\█████│█████/│ │\█████│█████/│ │██████│ │██████│ │██████│ │ /│\ │\█████│██████│██████│█████/│██████│\█████│██████│\
4687
- /███│██████│██/ \███│██/ .\███│██/ . │██████│ . │██████│ . │██████│ . /███│██\ \███│██████│██████│██/ │██████│ \███│██████│██\
4688
- │/█████│██████│/ \│/ │ │ \│/ │ │██████│ │██████│ │██████│ │/█████│█████\│ \│██████│██████│/ │██████│ \│██████│█████\│
4686
+ /█│██████│█████/│\█████│█████/│ │\█████│█████/│ │██████│ │██████│ │██████│ │ /█│█\ │\█████│██████│██████│█████/│██████│\█████│██████│█\
4687
+ /███│██████│███/ \███│███/ │ .\███│███/ . │██████│ . │██████│ . │██████│ . │ /███│███\ \███│██████│██████│███/ │██████│ \███│██████│███\
4688
+ │/█████│██████│█/ \█│█/ │ │ \█│█/ │ │██████│ │██████│ │██████│ │/█████│█████\│ \█│██████│██████│█/ │██████│ \█│██████│█████\│
4689
4689
  ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
4690
- │\█████│█████/│ /│\ │ │ /│\ │ │██████│ │██████│ /│\ /│\ │\█████│█████/│ │\█████│█████/│ │ /│\ │\█████│█████/│
4691
- \███│██/ /███│██\ 4/███│██\ │ 3 │██████│ . │██████│ /███│██\ /███│██\ \███│██/ .\███│██/ 4/███│██\\███│██/
4692
- \│/ │/█████│█████\│ │/█████│█████\│ │██████│ │██████│/█████│█████\│/█████│█████\│ \│/ │ │ \│/ │ │/█████│█████\│ \│/
4690
+ │\█████│█████/│ /█│█\ │ │ /█│█\ │ │██████│ │██████│ /█│█\ /█│█\ │\█████│█████/│ │\█████│█████/│ │ /█│█\ │\█████│█████/│
4691
+ \███│███/ /███│███\ │ 4/███│███\ │ 3 │██████│ . │██████│ /███│███\ /███│███\ \███│███/ .\███│███/ 4/███│███\ \███│███/ │
4692
+ \█│█/ │/█████│█████\│ │/█████│█████\│ │██████│ │██████│/█████│█████\│/█████│█████\│ \█│█/ │ │ \█│█/ │ │/█████│█████\│ \█│█/
4693
4693
  ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
4694
- │██████│ │\█████│██████│\ │\█████│█████/│ /│\ │██████│ │\█████│█████/│\█████│█████/│ │ /│\ │ │ /│\ │\█████│██████│\ │ │
4695
- │██████│ . \███│██████│██\ \███│██/ /███│██\ │██████│ .\███│██/ \███│██/ 3/███│██\ ./███│██\ \███│██████│██\ 3 │
4696
- │██████│ │ \│██████│█████\│ \│/ │/█████│█████\│██████│ │ \│/ \│/ │ │/█████│█████\│ │/█████│█████\│ \│██████│█████\│
4694
+ │██████│ │\█████│██████│█\ │\█████│█████/│ /█│█\ │██████│ │\█████│█████/│\█████│█████/│ │ /█│█\ │ │ /█│█\ │\█████│██████│█\ │ │
4695
+ │██████│ .\███│██████│███\ \███│███/ /███│███\ │██████│ . \███│███/ \███│███/ 3/███│███\ ./███│███\ \███│██████│███\ 3
4696
+ │██████│ │ \█│██████│█████\│ \█│█/ │/█████│█████\│██████│ │ \█│█/ \█│█/ │ │/█████│█████\│ │/█████│█████\│ \█│██████│█████\│
4697
4697
  ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
4698
- │ │██████│██████│\█████│█████/│██████│██████│\█████│█████/│ │ /│\ │██████│ │██████│██████│\█████│██████│\ │\█████│█████/│ │\█████│██████│\
4699
- . │██████│██████│ \███│██/ │██████│██████│ \███│██/ . /███│██\ │██████│ 1 │██████│██████│ \███│██████│██\ │ \███│██/ 4\███│██████│██\
4700
- │ │██████│██████│ \│/ │██████│██████│ \│/ │ │/█████│█████\│██████│ │██████│██████│ \│██████│█████\│ \│/ │ │ \│██████│█████\│
4698
+ │ │██████│██████│\█████│█████/│██████│██████│\█████│█████/│ │ /█│█\ │██████│ │██████│██████│\█████│██████│█\ │\█████│█████/│ │\█████│██████│█\
4699
+ . │██████│██████│ \███│███/ │██████│██████│ \███│███/ ./███│███\ │██████│ 1 │██████│██████│ \███│██████│███\\███│███/ 4 \███│██████│███\ │
4700
+ │ │██████│██████│ \█│█/ │██████│██████│ \█│█/ │ │/█████│█████\│██████│ │██████│██████│ \█│██████│█████\│ \█│█/ │ │ \█│██████│█████\│
4701
4701
  ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
4702
- /│\ │ │██████│ │██████│██████│ │██████│ /│██████│██████│\ │ │██████│██████│ │\█████│█████/│ │ /│\ │██████│\█████│█████/│
4703
- /███│██\ │ . │██████│ . │██████│██████│ 2 │██████│ /███│██████│██████│██\ │ . │██████│██████│ .\███│██/ . /███│██\ │██████│ \███│██/
4704
- │/█████│█████\│ │██████│ │██████│██████│ │██████│/█████│██████│██████│█████\│ │██████│██████│ │ \│/ │ │/█████│█████\│██████│ \│/
4702
+ /█│█\ │ │██████│ │██████│██████│ │██████│ /█│██████│██████│█\ │ │██████│██████│ │\█████│█████/│ │ /█│█\ │██████│\█████│█████/│
4703
+ /███│███\ . │██████│ . │██████│██████│ 2 │██████│ /███│██████│██████│███\ . │██████│██████│ . \███│███/ ./███│███\ │██████│ \███│███/
4704
+ │/█████│█████\│ │██████│ │██████│██████│ │██████│/█████│██████│██████│█████\│ │██████│██████│ │ \█│█/ │ │/█████│█████\│██████│ \█│█/
4705
4705
  ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
4706
- │\█████│█████/│██████│ /│\ │██████│██████│ /│\ │\█████│██████│██████│██████│\ │██████│██████│ │██████│ /│\ │\█████│█████/│ │ /│\
4707
- \███│██/ │██████│ /███│██\ │██████│██████│ /███│██\ \███│██████│██████│██████│██\ │██████│██████│ 0 │██████│ /███│██\ │ \███│██/ ./███│██\
4708
- \│/ │██████│/█████│█████\│██████│██████│/█████│█████\│ \│██████│██████│██████│█████\│██████│██████│ │██████│/█████│█████\│ \│/ │ │/█████│█████\│
4706
+ │\█████│█████/│██████│ /█│█\ │██████│██████│ /█│█\ │\█████│██████│██████│██████│█\ │██████│██████│ │██████│ /█│█\ │\█████│█████/│ │ /█│█\
4707
+ \███│███/ │██████│ /███│███\ │██████│██████│ /███│███\ \███│██████│██████│██████│███\ │██████│██████│ 0 │██████│ /███│███\\███│███/ . /███│███\ │
4708
+ \█│█/ │██████│/█████│█████\│██████│██████│/█████│█████\│ \█│██████│██████│██████│█████\│██████│██████│ │██████│/█████│█████\│ \█│█/ │ │/█████│█████\│
4709
4709
  ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
4710
- │ │██████│ /│██████│█████/│██████│██████│\█████│█████/│ │\█████│██████│██████│█████/│██████│██████│ │ /│██████│█████/│██████│██████│██████│\█████│█████/│
4711
- . │██████│ /███│██████│██/ │██████│██████│ \███│██/ . \███│██████│██████│██/ │██████│██████│ . /███│██████│██/ │██████│██████│██████│ \███│██/
4712
- │██████│/█████│██████│/ │██████│██████│ \│/ │ │ \│██████│██████│/ │██████│██████│ │/█████│██████│/ │██████│██████│██████│ \│/
4710
+ │ │██████│ /█│██████│█████/│██████│██████│\█████│█████/│ │\█████│██████│██████│█████/│██████│██████│ │ /█│██████│█████/│██████│██████│██████│\█████│█████/│
4711
+ . │██████│ /███│██████│███/ │██████│██████│ \███│███/ .\███│██████│██████│███/ │██████│██████│ ./███│██████│███/ │██████│██████│██████│ \███│███/
4712
+ │██████│/█████│██████│█/ │██████│██████│ \█│█/ │ │ \█│██████│██████│█/ │██████│██████│ │/█████│██████│█/ │██████│██████│██████│ \█│█/
4713
4713
  ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
4714
- │██████│ /│██████│█████/│ /│\ │ │ │██████│██████│ │\█████│█████/│ /│\ │ │ /│██████│█████/│██████│ /│\ /│\
4715
- │██████│ /███│██████│██/ /███│██\ 2 . │██████│██████│ 2\███│██/ /███│██\ . /███│██████│██/ │██████│ 1 /███│██\ /███│██\
4716
- │██████│/█████│██████│/ │/█████│█████\│ │ │██████│██████│ │ \│/ │/█████│█████\│ │/█████│██████│/ │██████│ │/█████│█████\│/█████│█████\│
4714
+ │██████│ /█│██████│█████/│ /█│█\ │ │ │██████│██████│ │\█████│█████/│ /█│█\ │ │ /█│██████│█████/│██████│ /█│█\ /█│█\
4715
+ │██████│ /███│██████│███/ /███│███\ │ 2. │██████│██████│ 2 \███│███/ /███│███\ ./███│██████│███/ │██████│ 1/███│███\ /███│███\
4716
+ │██████│/█████│██████│█/ │/█████│█████\│ │ │██████│██████│ │ \█│█/ │/█████│█████\│ │/█████│██████│█/ │██████│ │/█████│█████\│/█████│█████\│
4717
4717
  ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
4718
- /│██████│█████/│ │\█████│██████│\ │ │██████│██████│ │ /│\ │\█████│█████/│██████│\█████│█████/│ │██████│ │\█████│█████/│\█████│█████/│
4719
- /███│██████│██/ 3\███│██████│██\ │ 2 │██████│██████│ 1/███│██\ \███│██/ │██████│ \███│██/ . │██████│ .\███│██/ │ \███│██/
4720
- │/█████│██████│/ │ │ \│██████│█████\│ │██████│██████│ │/█████│█████\│ \│/ │██████│ \│/ │ │██████│ │ \│/ \│/
4718
+ /█│██████│█████/│ │\█████│██████│█\ │ │██████│██████│ │ /█│█\ │\█████│█████/│██████│\█████│█████/│ │██████│ │\█████│█████/│\█████│█████/│
4719
+ /███│██████│███/ │ 3\███│██████│███\ 2 │██████│██████│ 1 /███│███\ \███│███/ │██████│ \███│███/ . │██████│ .\███│███/\███│███/
4720
+ │/█████│██████│█/ │ │ \█│██████│█████\│ │██████│██████│ │/█████│█████\│ \█│█/ │██████│ \█│█/ │ │██████│ │ \█│█/ \█│█/
4721
4721
  ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
4722
- │\█████│█████/│ │██████│██████│\█████│██████│\ │██████│██████│ │\█████│██████│\ │ │ /│\ │ │ /│\ │██████│██████│ /│\ │ │
4723
- \███│██/ . │██████│██████│ \███│██████│██\ │██████│██████│ .\███│██████│██\ ./███│██\ . /███│██\ │██████│██████│ /███│██\ 2
4724
- \│/ │ │██████│██████│ \│██████│█████\│██████│██████│ \│██████│█████\│ │/█████│█████\│ │/█████│█████\│██████│██████│/█████│█████\│ │
4722
+ │\█████│█████/│ │██████│██████│\█████│██████│█\ │██████│██████│ │\█████│██████│█\ │ │ /█│█\ │ │ /█│█\ │██████│██████│ /█│█\ │ │
4723
+ \███│███/ . │██████│██████│ \███│██████│███\ │██████│██████│ . \███│██████│███\ ./███│███\ ./███│███\ │██████│██████│ /███│███\ 2
4724
+ \█│█/ │ │██████│██████│ \█│██████│█████\│██████│██████│ \█│██████│█████\│ │/█████│█████\│ │/█████│█████\│██████│██████│/█████│█████\│ │
4725
4725
  ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
4726
- │ │ /│\ │ │ /│\ │\█████│██████│\ /│\ │\█████│██████│\ │\█████│█████/│██████│\█████│█████/│ │ /│██████│█████/│██████│
4727
- 2/███│██\ ./███│██\ \███│██████│██\ /███│██\ 3 \███│██████│██\ \███│██/ │██████│ \███│██/ . /███│██████│██/ │██████│
4728
- │ │/█████│█████\│ │/█████│█████\│ \│██████│█████\│/█████│█████\│ \│██████│█████\│ \│/ │██████│ \│/ │/█████│██████│/ │██████│
4726
+ │ │ /█│█\ │ │ /█│█\ │\█████│██████│█\ /█│█\ │\█████│██████│█\ │\█████│█████/│██████│\█████│█████/│ │ /█│██████│█████/│██████│
4727
+ 2 /███│███\ ./███│███\ \███│██████│███\ /███│███\ 3\███│██████│███\\███│███/ │██████│ \███│███/ ./███│██████│███/ │██████│
4728
+ │ │/█████│█████\│ │/█████│█████\│ \█│██████│█████\│/█████│█████\│ \█│██████│█████\│ \█│█/ │██████│ \█│█/ │/█████│██████│█/ │██████│
4729
4729
  ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
4730
4730
  │██████│\█████│█████/│██████│\█████│█████/│ │\█████│█████/│\█████│█████/│██████│ │\█████│█████/│██████│██████│ │██████│██████│██████│\█████│█████/│ │██████│
4731
- │██████│ \███│██/ │██████│ \███│██/ │ 3\███│██/\███│██/ │██████│ 2 \███│██/ │██████│██████│ 0 │██████│██████│██████│ \███│██/ 2 │██████│
4732
- │██████│ \│/ │██████│ \│/ │ │ \│/ \│/ │██████│ │ \│/ │██████│██████│ │██████│██████│██████│ \│/ │ │██████│
4733
- └──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┘Solutions found: 1
4731
+ │██████│ \███│███/ │██████│ \███│███/3\███│███/ │ \███│███/ │██████│ 2\███│███/ │██████│██████│ 0 │██████│██████│██████│ \███│███/ 2 │██████│
4732
+ │██████│ \█│█/ │██████│ \█│█/ │ │ \█│█/ \█│█/ │██████│ │ \█│█/ │██████│██████│ │██████│██████│██████│ \█│█/ │ │██████│
4733
+ └──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┘
4734
+ Solutions found: 1
4734
4735
  status: OPTIMAL
4735
- Time taken: 0.37 seconds
4736
+ Time taken: 0.36 seconds
4736
4737
  ```
4737
4738
 
4738
4739
  **Solved puzzle**
@@ -1,7 +1,7 @@
1
- puzzle_solver/__init__.py,sha256=f79JI0EQhfQi12yO6gvuzzLtxXQgojVrq-v8HZrzjS0,3693
1
+ puzzle_solver/__init__.py,sha256=q8lMGHFeg0ZbUxDApJHDcGcQtpNKPHCh3muRfPwpPN4,3693
2
2
  puzzle_solver/core/utils.py,sha256=XBW5j-IwtJMPMP-ycmY6SqRCM1NOVl5O6UeoGqNj618,8153
3
3
  puzzle_solver/core/utils_ortools.py,sha256=_i8cixHOB5XGqqcr-493bOiZgYJidnvxQMEfj--Trns,10278
4
- puzzle_solver/core/utils_visualizer.py,sha256=2jBnS2PeI4keFf-rneScSxX669zXu5F1lkClZ5EkMhE,21152
4
+ puzzle_solver/core/utils_visualizer.py,sha256=c4cq_BpwDc1oao6KkghisiawwaIVQpTOIEZtVWIkA3w,20249
5
5
  puzzle_solver/puzzles/aquarium/aquarium.py,sha256=BUfkAS2d9eG3TdMoe1cOGGeNYgKUebRvn-z9nsC9gvE,5708
6
6
  puzzle_solver/puzzles/battleships/battleships.py,sha256=RuYCrs4j0vUjlU139NRYYP-uNPAgO0V7hAzbsHrRwD8,7446
7
7
  puzzle_solver/puzzles/binairo/binairo.py,sha256=4xgYd1ewYIQCqEzsHdgp6hWzyW_TF_2rt6PO8QLFKWU,6838
@@ -61,7 +61,7 @@ puzzle_solver/puzzles/unruly/unruly.py,sha256=sDF0oKT50G-NshyW2DYrvAgD9q9Ku9ANUy
61
61
  puzzle_solver/puzzles/yin_yang/yin_yang.py,sha256=WrRdNhmKhIARdGOt_36gpRxRzrfLGv3wl7igBpPFM64,5259
62
62
  puzzle_solver/puzzles/yin_yang/parse_map/parse_map.py,sha256=drjfoHqmFf6U-ZQUwrBbfGINRxDQpgbvy4U3D9QyMhM,6617
63
63
  puzzle_solver/utils/visualizer.py,sha256=tsX1yEKwmwXBYuBJpx_oZGe2UUt1g5yV73G3UbtmvtE,6817
64
- multi_puzzle_solver-0.9.30.dist-info/METADATA,sha256=yxPV6ZvkvGPOs1O2HpIob3e94uFQXjpm5JJKdCXyc2s,335384
65
- multi_puzzle_solver-0.9.30.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
66
- multi_puzzle_solver-0.9.30.dist-info/top_level.txt,sha256=exwVUQa-anK9vYrpKzBPvH8bX43iElWI4VeNiAyBGJY,14
67
- multi_puzzle_solver-0.9.30.dist-info/RECORD,,
64
+ multi_puzzle_solver-0.9.31.dist-info/METADATA,sha256=yVpID_W67orWIzxxJ49qwggTacSPLjOrS0KjfUZm31U,336388
65
+ multi_puzzle_solver-0.9.31.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
66
+ multi_puzzle_solver-0.9.31.dist-info/top_level.txt,sha256=exwVUQa-anK9vYrpKzBPvH8bX43iElWI4VeNiAyBGJY,14
67
+ multi_puzzle_solver-0.9.31.dist-info/RECORD,,
puzzle_solver/__init__.py CHANGED
@@ -52,4 +52,4 @@ from puzzle_solver.puzzles.yin_yang import yin_yang as yin_yang_solver
52
52
 
53
53
  from puzzle_solver.puzzles.inertia.parse_map.parse_map import main as inertia_image_parser
54
54
 
55
- __version__ = '0.9.30'
55
+ __version__ = '0.9.31'
@@ -383,26 +383,17 @@ def render_bw_tiles_split(
383
383
  else: # y = 1 - x
384
384
  return (fy < 1 - fx) if val == "TL" else (fy > 1 - fx)
385
385
 
386
- def on_boundary(val: CellVal, fx: float, fy: float) -> bool:
387
- if val in ("B","W"):
388
- return False
389
- kind, _ = diag_kind_and_slash(val)
390
- eps = 0.5 / max(cell_w, cell_h) # thin boundary
391
- if kind == "main":
392
- return abs(fy - fx) <= eps
393
- else:
394
- return abs(fy - (1 - fx)) <= eps
395
-
396
386
  # Build one tile as a matrix of 1-char tokens (already colorized if ANSI)
397
387
  def make_tile(val: CellVal) -> List[List[str]]:
398
388
  rows: List[List[str]] = []
399
- kind, slash_ch = diag_kind_and_slash(val)
400
-
389
+ _, slash_ch = diag_kind_and_slash(val)
401
390
  for y in range(cell_h):
402
391
  fy = (y + 0.5) / cell_h
403
392
  line: List[str] = []
393
+ prev = None
404
394
  for x in range(cell_w):
405
395
  fx = (x + 0.5) / cell_w
396
+ fx_next = (x + 1.5) / cell_w
406
397
 
407
398
  if val == "B":
408
399
  line.append(sgr(bg=BG_BLACK) + " " + RESET if use_color else TXT_BLACK)
@@ -412,7 +403,12 @@ def render_bw_tiles_split(
412
403
  continue
413
404
 
414
405
  black_side = is_black(val, fx, fy)
415
- boundary = on_boundary(val, fx, fy)
406
+ next_black_side = is_black(val, fx_next, fy)
407
+ boundary = False # if true places a "/" or "\" at the current position
408
+ if prev is not None and not prev and black_side: # prev white and cur black => boundary now
409
+ boundary = True
410
+ if black_side and not next_black_side: # cur black and next white => boundary now
411
+ boundary = True
416
412
 
417
413
  if use_color:
418
414
  bg = BG_BLACK if black_side else BG_WHITE
@@ -426,6 +422,7 @@ def render_bw_tiles_split(
426
422
  line.append(slash_ch)
427
423
  else:
428
424
  line.append(TXT_BLACK if black_side else TXT_WHITE)
425
+ prev = black_side
429
426
  rows.append(line)
430
427
  return rows
431
428
 
@@ -435,23 +432,7 @@ def render_bw_tiles_split(
435
432
  return
436
433
  ch = ch[0] # keep one character (user said single number)
437
434
  cx, cy = cell_w // 2, cell_h // 2
438
- fx = (cx + 0.5) / cell_w
439
- fy = (cy + 0.5) / cell_h
440
-
441
- # If center is boundary or not black, nudge horizontally toward black side
442
- if val in ("TL","TR","BL","BR"):
443
- kind, _ = diag_kind_and_slash(val)
444
- # Determine which side is black relative to x at this y
445
- if kind == "main": # boundary y=x → compare fx vs fy
446
- want_right = (val == "TR") # black is to the right of boundary
447
- if on_boundary(val, fx, fy) or (is_black(val, fx, fy) is False):
448
- if want_right and cx + 1 < cell_w: cx += 1
449
- elif not want_right and cx - 1 >= 0: cx -= 1
450
- else: # boundary y=1-x → compare fx vs 1-fy
451
- want_left = (val == "TL") # black is to the left of boundary
452
- if on_boundary(val, fx, fy) or (is_black(val, fx, fy) is False):
453
- if want_left and cx - 1 >= 0: cx -= 1
454
- elif not want_left and cx + 1 < cell_w: cx += 1
435
+ cx -= 1
455
436
 
456
437
  # Compose the glyph for that spot
457
438
  if use_color: