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.
- {multi_puzzle_solver-0.9.30.dist-info → multi_puzzle_solver-0.9.31.dist-info}/METADATA +77 -76
- {multi_puzzle_solver-0.9.30.dist-info → multi_puzzle_solver-0.9.31.dist-info}/RECORD +6 -6
- puzzle_solver/__init__.py +1 -1
- puzzle_solver/core/utils_visualizer.py +11 -30
- {multi_puzzle_solver-0.9.30.dist-info → multi_puzzle_solver-0.9.31.dist-info}/WHEEL +0 -0
- {multi_puzzle_solver-0.9.30.dist-info → multi_puzzle_solver-0.9.31.dist-info}/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: multi-puzzle-solver
|
|
3
|
-
Version: 0.9.
|
|
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
|
-
│
|
|
4634
|
+
│ /█│█\ │ │██████│ │ /█│█\ │ │██████│██████│ │ │██████│ /█│█\ │ │██████│ /█│█\ │██████│ │██████│ │ /█│█\ │
|
|
4635
|
+
│ /███│███\ │ . │██████│ 1 │ /███│███\ │ 1 │██████│██████│ . │ . │██████│ /███│███\ │ 2 │██████│ /███│███\ │██████│ . │██████│ . │ /███│███\ │
|
|
4636
4636
|
│/█████│█████\│ │██████│ │/█████│█████\│ │██████│██████│ │ │██████│/█████│█████\│ │██████│/█████│█████\│██████│ │██████│ │/█████│█████\│
|
|
4637
4637
|
├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
|
|
4638
|
-
│\█████│█████/│
|
|
4639
|
-
│
|
|
4640
|
-
│
|
|
4638
|
+
│\█████│█████/│ /█│█\ │██████│\█████│█████/│██████│ /█│█\ │██████│ │██████│\█████│██████│█\ │ │\█████│██████│█\ │██████│ /█│█\ │\█████│█████/│
|
|
4639
|
+
│ \███│███/ │ /███│███\ │██████│ \███│███/ │██████│ /███│███\ │██████│ . │██████│ \███│██████│███\ │ . │ \███│██████│███\ │██████│ /███│███\ │ \███│███/ │
|
|
4640
|
+
│ \█│█/ │/█████│█████\│██████│ \█│█/ │██████│/█████│█████\│██████│ │██████│ \█│██████│█████\│ │ \█│██████│█████\│██████│/█████│█████\│ \█│█/ │
|
|
4641
4641
|
├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
|
|
4642
|
-
│██████│
|
|
4643
|
-
│██████│
|
|
4644
|
-
│██████│/█████│██████│██████│█████\│/█████│█████\│ │
|
|
4642
|
+
│██████│ /█│██████│██████│█\ │ /█│█\ │ │\█████│██████│█\ │██████│ /█│█\ │\█████│██████│█\ │ │\█████│█████/│ /█│██████│██████│█\ │██████│
|
|
4643
|
+
│██████│ /███│██████│██████│███\ │ /███│███\ │ 3 │ \███│██████│███\ │██████│ /███│███\ │ \███│██████│███\ │ 4 │ \███│███/ │ /███│██████│██████│███\ │██████│
|
|
4644
|
+
│██████│/█████│██████│██████│█████\│/█████│█████\│ │ \█│██████│█████\│██████│/█████│█████\│ \█│██████│█████\│ │ \█│█/ │/█████│██████│██████│█████\│██████│
|
|
4645
4645
|
├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
|
|
4646
|
-
│██████│\█████│██████│██████│█████/│\█████│█████/│
|
|
4647
|
-
│██████│
|
|
4648
|
-
│██████│
|
|
4646
|
+
│██████│\█████│██████│██████│█████/│\█████│█████/│ /█│█\ │\█████│█████/│ │\█████│█████/│██████│\█████│██████│█\ │ │██████│\█████│██████│██████│█████/│ │
|
|
4647
|
+
│██████│ \███│██████│██████│███/ │ \███│███/ │ /███│███\ │ \███│███/ │ . │ \███│███/ │██████│ \███│██████│███\ │ 3 │██████│ \███│██████│██████│███/ │ . │
|
|
4648
|
+
│██████│ \█│██████│██████│█/ │ \█│█/ │/█████│█████\│ \█│█/ │ │ \█│█/ │██████│ \█│██████│█████\│ │██████│ \█│██████│██████│█/ │ │
|
|
4649
4649
|
├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
|
|
4650
|
-
│ │██████│\█████│█████/│
|
|
4651
|
-
│
|
|
4652
|
-
│ │██████│
|
|
4650
|
+
│ │██████│\█████│█████/│ /█│█\ │ /█│██████│█████/│██████│ │ /█│█\ │ /█│█\ │██████│\█████│█████/│ /█│█\ │ │\█████│█████/│██████│██████│
|
|
4651
|
+
│ 1 │██████│ \███│███/ │ /███│███\ │ /███│██████│███/ │██████│ 2 │ /███│███\ │ /███│███\ │██████│ \███│███/ │ /███│███\ │ 4 │ \███│███/ │██████│██████│
|
|
4652
|
+
│ │██████│ \█│█/ │/█████│█████\│/█████│██████│█/ │██████│ │/█████│█████\│/█████│█████\│██████│ \█│█/ │/█████│█████\│ │ \█│█/ │██████│██████│
|
|
4653
4653
|
├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
|
|
4654
|
-
│
|
|
4655
|
-
│
|
|
4656
|
-
│/█████│█████\│ │██████│
|
|
4654
|
+
│ /█│█\ │ │██████│\█████│█████/│\█████│█████/│ /█│█\ │██████│\█████│█████/│\█████│█████/│ /█│█\ │██████│\█████│█████/│ /█│█\ │ │ /█│█\ │
|
|
4655
|
+
│ /███│███\ │ 3 │██████│ \███│███/ │ \███│███/ │ /███│███\ │██████│ \███│███/ │ \███│███/ │ /███│███\ │██████│ \███│███/ │ /███│███\ │ . │ /███│███\ │
|
|
4656
|
+
│/█████│█████\│ │██████│ \█│█/ │ \█│█/ │/█████│█████\│██████│ \█│█/ │ \█│█/ │/█████│█████\│██████│ \█│█/ │/█████│█████\│ │/█████│█████\│
|
|
4657
4657
|
├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
|
|
4658
|
-
|
|
4659
|
-
│
|
|
4660
|
-
│
|
|
4658
|
+
│\█████│██████│█\ │ │██████│██████│ │ /█│██████│██████│█\ │ │██████│ │ /█│██████│█████/│ │ /█│█\ │\█████│██████│█\ │\█████│█████/│
|
|
4659
|
+
│ \███│██████│███\ │ 1 │██████│██████│ 2 │ /███│██████│██████│███\ │ . │██████│ 3 │ /███│██████│███/ │ . │ /███│███\ │ \███│██████│███\ │ \███│███/ │
|
|
4660
|
+
│ \█│██████│█████\│ │██████│██████│ │/█████│██████│██████│█████\│ │██████│ │/█████│██████│█/ │ │/█████│█████\│ \█│██████│█████\│ \█│█/ │
|
|
4661
4661
|
├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
|
|
4662
|
-
│██████│\█████│█████/│ │██████│██████│ │\█████│██████│██████│█████/│██████│
|
|
4663
|
-
│██████│
|
|
4664
|
-
│██████│
|
|
4662
|
+
│██████│\█████│█████/│ │██████│██████│ │\█████│██████│██████│█████/│██████│ /█│█\ │\█████│█████/│ │██████│\█████│█████/│ │\█████│█████/│██████│ │
|
|
4663
|
+
│██████│ \███│███/ │ . │██████│██████│ . │ \███│██████│██████│███/ │██████│ /███│███\ │ \███│███/ │ 3 │██████│ \███│███/ │ 4 │ \███│███/ │██████│ . │
|
|
4664
|
+
│██████│ \█│█/ │ │██████│██████│ │ \█│██████│██████│█/ │██████│/█████│█████\│ \█│█/ │ │██████│ \█│█/ │ │ \█│█/ │██████│ │
|
|
4665
4665
|
├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
|
|
4666
|
-
│██████│ │ │
|
|
4667
|
-
│██████│
|
|
4668
|
-
│██████│ │ │/█████│█████\│ │██████│██████│
|
|
4666
|
+
│██████│ │ │ /█│█\ │ │██████│██████│\█████│█████/│ │ /█│██████│█████/│ │██████│ /█│█\ │ /█│█\ │ /█│█\ │ │ /█│█\ │
|
|
4667
|
+
│██████│ . │ 2 │ /███│███\ │ . │██████│██████│ \███│███/ │ 3 │ /███│██████│███/ │ 2 │██████│ /███│███\ │ /███│███\ │ /███│███\ │ 4 │ /███│███\ │
|
|
4668
|
+
│██████│ │ │/█████│█████\│ │██████│██████│ \█│█/ │ │/█████│██████│█/ │ │██████│/█████│█████\│/█████│█████\│/█████│█████\│ │/█████│█████\│
|
|
4669
4669
|
├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
|
|
4670
|
-
│ │██████│██████│\█████│█████/│ │██████│██████│ │██████│██████│\█████│█████/│██████│██████│
|
|
4671
|
-
│
|
|
4672
|
-
│ │██████│██████│
|
|
4670
|
+
│ │██████│██████│\█████│█████/│ │██████│██████│ │██████│██████│\█████│█████/│██████│██████│ /█│██████│█████/│\█████│█████/│\█████│█████/│ /█│██████│█████/│
|
|
4671
|
+
│ . │██████│██████│ \███│███/ │ . │██████│██████│ 1 │██████│██████│ \███│███/ │██████│██████│ /███│██████│███/ │ \███│███/ │ \███│███/ │ /███│██████│███/ │
|
|
4672
|
+
│ │██████│██████│ \█│█/ │ │██████│██████│ │██████│██████│ \█│█/ │██████│██████│/█████│██████│█/ │ \█│█/ │ \█│█/ │/█████│██████│█/ │
|
|
4673
4673
|
├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
|
|
4674
|
-
│ │██████│██████│ │
|
|
4675
|
-
│
|
|
4676
|
-
│ │██████│██████│ │/█████│█████\│██████│██████│ │/█████│█████\│██████│ │ │ │
|
|
4674
|
+
│ │██████│██████│ │ /█│█\ │██████│██████│ │ /█│█\ │██████│ │ │ │\█████│█████/│ /█│█\ │ │██████│ /█│██████│█████/│ │
|
|
4675
|
+
│ 0 │██████│██████│ . │ /███│███\ │██████│██████│ . │ /███│███\ │██████│ . │ . │ . │ \███│███/ │ /███│███\ │ 3 │██████│ /███│██████│███/ │ . │
|
|
4676
|
+
│ │██████│██████│ │/█████│█████\│██████│██████│ │/█████│█████\│██████│ │ │ │ \█│█/ │/█████│█████\│ │██████│/█████│██████│█/ │ │
|
|
4677
4677
|
├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
|
|
4678
|
-
│ │██████│██████│
|
|
4679
|
-
│
|
|
4680
|
-
│ │██████│██████│ │
|
|
4678
|
+
│ │██████│██████│ │\█████│██████│█\ │ │ /█│██████│█████/│ │██████│ /█│█\ │██████│ /█│██████│██████│█\ │██████│\█████│█████/│ │██████│
|
|
4679
|
+
│ 0 │██████│██████│ . │ \███│██████│███\ │ . │ /███│██████│███/ │ 1 │██████│ /███│███\ │██████│ /███│██████│██████│███\ │██████│ \███│███/ │ 3 │██████│
|
|
4680
|
+
│ │██████│██████│ │ \█│██████│█████\│ │/█████│██████│█/ │ │██████│/█████│█████\│██████│/█████│██████│██████│█████\│██████│ \█│█/ │ │██████│
|
|
4681
4681
|
├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
|
|
4682
|
-
│██████│
|
|
4683
|
-
│██████│
|
|
4684
|
-
│██████│/█████│█████\│/█████│█████\│
|
|
4682
|
+
│██████│ /█│█\ │ /█│█\ │\█████│██████│█\ │\█████│█████/│ │██████│ │\█████│█████/│ │\█████│██████│██████│██████│█\ │ │ /█│█\ │██████│
|
|
4683
|
+
│██████│ /███│███\ │ /███│███\ │ \███│██████│███\ │ \███│███/ │ 2 │██████│ . │ \███│███/ │ . │ \███│██████│██████│██████│███\ │ . │ /███│███\ │██████│
|
|
4684
|
+
│██████│/█████│█████\│/█████│█████\│ \█│██████│█████\│ \█│█/ │ │██████│ │ \█│█/ │ │ \█│██████│██████│██████│█████\│ │/█████│█████\│██████│
|
|
4685
4685
|
├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
|
|
4686
|
-
│
|
|
4687
|
-
│
|
|
4688
|
-
|
|
4686
|
+
│ /█│██████│█████/│\█████│█████/│ │\█████│█████/│ │██████│ │██████│ │██████│ │ /█│█\ │\█████│██████│██████│█████/│██████│\█████│██████│█\ │
|
|
4687
|
+
│ /███│██████│███/ │ \███│███/ │ . │ \███│███/ │ . │██████│ . │██████│ . │██████│ . │ /███│███\ │ \███│██████│██████│███/ │██████│ \███│██████│███\ │
|
|
4688
|
+
│/█████│██████│█/ │ \█│█/ │ │ \█│█/ │ │██████│ │██████│ │██████│ │/█████│█████\│ \█│██████│██████│█/ │██████│ \█│██████│█████\│
|
|
4689
4689
|
├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
|
|
4690
|
-
│\█████│█████/│
|
|
4691
|
-
│
|
|
4692
|
-
│
|
|
4690
|
+
│\█████│█████/│ /█│█\ │ │ /█│█\ │ │██████│ │██████│ /█│█\ │ /█│█\ │\█████│█████/│ │\█████│█████/│ │ /█│█\ │\█████│█████/│
|
|
4691
|
+
│ \███│███/ │ /███│███\ │ 4 │ /███│███\ │ 3 │██████│ . │██████│ /███│███\ │ /███│███\ │ \███│███/ │ . │ \███│███/ │ 4 │ /███│███\ │ \███│███/ │
|
|
4692
|
+
│ \█│█/ │/█████│█████\│ │/█████│█████\│ │██████│ │██████│/█████│█████\│/█████│█████\│ \█│█/ │ │ \█│█/ │ │/█████│█████\│ \█│█/ │
|
|
4693
4693
|
├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
|
|
4694
|
-
│██████│
|
|
4695
|
-
│██████│
|
|
4696
|
-
│██████│ │
|
|
4694
|
+
│██████│ │\█████│██████│█\ │\█████│█████/│ /█│█\ │██████│ │\█████│█████/│\█████│█████/│ │ /█│█\ │ │ /█│█\ │\█████│██████│█\ │ │
|
|
4695
|
+
│██████│ . │ \███│██████│███\ │ \███│███/ │ /███│███\ │██████│ . │ \███│███/ │ \███│███/ │ 3 │ /███│███\ │ . │ /███│███\ │ \███│██████│███\ │ 3 │
|
|
4696
|
+
│██████│ │ \█│██████│█████\│ \█│█/ │/█████│█████\│██████│ │ \█│█/ │ \█│█/ │ │/█████│█████\│ │/█████│█████\│ \█│██████│█████\│ │
|
|
4697
4697
|
├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
|
|
4698
|
-
│ │██████│██████│\█████│█████/│██████│██████│\█████│█████/│ │
|
|
4699
|
-
│
|
|
4700
|
-
│ │██████│██████│
|
|
4698
|
+
│ │██████│██████│\█████│█████/│██████│██████│\█████│█████/│ │ /█│█\ │██████│ │██████│██████│\█████│██████│█\ │\█████│█████/│ │\█████│██████│█\ │
|
|
4699
|
+
│ . │██████│██████│ \███│███/ │██████│██████│ \███│███/ │ . │ /███│███\ │██████│ 1 │██████│██████│ \███│██████│███\ │ \███│███/ │ 4 │ \███│██████│███\ │
|
|
4700
|
+
│ │██████│██████│ \█│█/ │██████│██████│ \█│█/ │ │/█████│█████\│██████│ │██████│██████│ \█│██████│█████\│ \█│█/ │ │ \█│██████│█████\│
|
|
4701
4701
|
├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
|
|
4702
|
-
│
|
|
4703
|
-
│
|
|
4704
|
-
│/█████│█████\│ │██████│ │██████│██████│ │██████│/█████│██████│██████│█████\│ │██████│██████│ │
|
|
4702
|
+
│ /█│█\ │ │██████│ │██████│██████│ │██████│ /█│██████│██████│█\ │ │██████│██████│ │\█████│█████/│ │ /█│█\ │██████│\█████│█████/│
|
|
4703
|
+
│ /███│███\ │ . │██████│ . │██████│██████│ 2 │██████│ /███│██████│██████│███\ │ . │██████│██████│ . │ \███│███/ │ . │ /███│███\ │██████│ \███│███/ │
|
|
4704
|
+
│/█████│█████\│ │██████│ │██████│██████│ │██████│/█████│██████│██████│█████\│ │██████│██████│ │ \█│█/ │ │/█████│█████\│██████│ \█│█/ │
|
|
4705
4705
|
├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
|
|
4706
|
-
│\█████│█████/│██████│
|
|
4707
|
-
│
|
|
4708
|
-
│
|
|
4706
|
+
│\█████│█████/│██████│ /█│█\ │██████│██████│ /█│█\ │\█████│██████│██████│██████│█\ │██████│██████│ │██████│ /█│█\ │\█████│█████/│ │ /█│█\ │
|
|
4707
|
+
│ \███│███/ │██████│ /███│███\ │██████│██████│ /███│███\ │ \███│██████│██████│██████│███\ │██████│██████│ 0 │██████│ /███│███\ │ \███│███/ │ . │ /███│███\ │
|
|
4708
|
+
│ \█│█/ │██████│/█████│█████\│██████│██████│/█████│█████\│ \█│██████│██████│██████│█████\│██████│██████│ │██████│/█████│█████\│ \█│█/ │ │/█████│█████\│
|
|
4709
4709
|
├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
|
|
4710
|
-
│ │██████│
|
|
4711
|
-
│
|
|
4712
|
-
│
|
|
4710
|
+
│ │██████│ /█│██████│█████/│██████│██████│\█████│█████/│ │\█████│██████│██████│█████/│██████│██████│ │ /█│██████│█████/│██████│██████│██████│\█████│█████/│
|
|
4711
|
+
│ . │██████│ /███│██████│███/ │██████│██████│ \███│███/ │ . │ \███│██████│██████│███/ │██████│██████│ . │ /███│██████│███/ │██████│██████│██████│ \███│███/ │
|
|
4712
|
+
│ │██████│/█████│██████│█/ │██████│██████│ \█│█/ │ │ \█│██████│██████│█/ │██████│██████│ │/█████│██████│█/ │██████│██████│██████│ \█│█/ │
|
|
4713
4713
|
├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
|
|
4714
|
-
│██████│
|
|
4715
|
-
│██████│
|
|
4716
|
-
|
|
4714
|
+
│██████│ /█│██████│█████/│ /█│█\ │ │ │██████│██████│ │\█████│█████/│ /█│█\ │ │ /█│██████│█████/│██████│ │ /█│█\ │ /█│█\ │
|
|
4715
|
+
│██████│ /███│██████│███/ │ /███│███\ │ 2 │ . │██████│██████│ 2 │ \███│███/ │ /███│███\ │ . │ /███│██████│███/ │██████│ 1 │ /███│███\ │ /███│███\ │
|
|
4716
|
+
│██████│/█████│██████│█/ │/█████│█████\│ │ │██████│██████│ │ \█│█/ │/█████│█████\│ │/█████│██████│█/ │██████│ │/█████│█████\│/█████│█████\│
|
|
4717
4717
|
├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
|
|
4718
|
-
│
|
|
4719
|
-
│
|
|
4720
|
-
|
|
4718
|
+
│ /█│██████│█████/│ │\█████│██████│█\ │ │██████│██████│ │ /█│█\ │\█████│█████/│██████│\█████│█████/│ │██████│ │\█████│█████/│\█████│█████/│
|
|
4719
|
+
│ /███│██████│███/ │ 3 │ \███│██████│███\ │ 2 │██████│██████│ 1 │ /███│███\ │ \███│███/ │██████│ \███│███/ │ . │██████│ . │ \███│███/ │ \███│███/ │
|
|
4720
|
+
│/█████│██████│█/ │ │ \█│██████│█████\│ │██████│██████│ │/█████│█████\│ \█│█/ │██████│ \█│█/ │ │██████│ │ \█│█/ │ \█│█/ │
|
|
4721
4721
|
├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
|
|
4722
|
-
│\█████│█████/│
|
|
4723
|
-
│
|
|
4724
|
-
│
|
|
4722
|
+
│\█████│█████/│ │██████│██████│\█████│██████│█\ │██████│██████│ │\█████│██████│█\ │ │ /█│█\ │ │ /█│█\ │██████│██████│ /█│█\ │ │
|
|
4723
|
+
│ \███│███/ │ . │██████│██████│ \███│██████│███\ │██████│██████│ . │ \███│██████│███\ │ . │ /███│███\ │ . │ /███│███\ │██████│██████│ /███│███\ │ 2 │
|
|
4724
|
+
│ \█│█/ │ │██████│██████│ \█│██████│█████\│██████│██████│ │ \█│██████│█████\│ │/█████│█████\│ │/█████│█████\│██████│██████│/█████│█████\│ │
|
|
4725
4725
|
├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
|
|
4726
|
-
│ │
|
|
4727
|
-
│
|
|
4728
|
-
│ │/█████│█████\│ │/█████│█████\│
|
|
4726
|
+
│ │ /█│█\ │ │ /█│█\ │\█████│██████│█\ │ /█│█\ │ │\█████│██████│█\ │\█████│█████/│██████│\█████│█████/│ │ /█│██████│█████/│██████│
|
|
4727
|
+
│ 2 │ /███│███\ │ . │ /███│███\ │ \███│██████│███\ │ /███│███\ │ 3 │ \███│██████│███\ │ \███│███/ │██████│ \███│███/ │ . │ /███│██████│███/ │██████│
|
|
4728
|
+
│ │/█████│█████\│ │/█████│█████\│ \█│██████│█████\│/█████│█████\│ │ \█│██████│█████\│ \█│█/ │██████│ \█│█/ │ │/█████│██████│█/ │██████│
|
|
4729
4729
|
├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
|
|
4730
4730
|
│██████│\█████│█████/│██████│\█████│█████/│ │\█████│█████/│\█████│█████/│██████│ │\█████│█████/│██████│██████│ │██████│██████│██████│\█████│█████/│ │██████│
|
|
4731
|
-
│██████│
|
|
4732
|
-
│██████│
|
|
4733
|
-
└──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┘
|
|
4731
|
+
│██████│ \███│███/ │██████│ \███│███/ │ 3 │ \███│███/ │ \███│███/ │██████│ 2 │ \███│███/ │██████│██████│ 0 │██████│██████│██████│ \███│███/ │ 2 │██████│
|
|
4732
|
+
│██████│ \█│█/ │██████│ \█│█/ │ │ \█│█/ │ \█│█/ │██████│ │ \█│█/ │██████│██████│ │██████│██████│██████│ \█│█/ │ │██████│
|
|
4733
|
+
└──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┘
|
|
4734
|
+
Solutions found: 1
|
|
4734
4735
|
status: OPTIMAL
|
|
4735
|
-
Time taken: 0.
|
|
4736
|
+
Time taken: 0.36 seconds
|
|
4736
4737
|
```
|
|
4737
4738
|
|
|
4738
4739
|
**Solved puzzle**
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
puzzle_solver/__init__.py,sha256=
|
|
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=
|
|
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.
|
|
65
|
-
multi_puzzle_solver-0.9.
|
|
66
|
-
multi_puzzle_solver-0.9.
|
|
67
|
-
multi_puzzle_solver-0.9.
|
|
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
|
@@ -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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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:
|
|
File without changes
|
|
File without changes
|