multi-puzzle-solver 1.0.4__py3-none-any.whl → 1.0.7__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-1.0.4.dist-info → multi_puzzle_solver-1.0.7.dist-info}/METADATA +1075 -556
- multi_puzzle_solver-1.0.7.dist-info/RECORD +74 -0
- puzzle_solver/__init__.py +5 -1
- puzzle_solver/core/utils.py +17 -1
- puzzle_solver/core/utils_visualizer.py +257 -201
- puzzle_solver/puzzles/abc_view/abc_view.py +75 -0
- puzzle_solver/puzzles/aquarium/aquarium.py +8 -23
- puzzle_solver/puzzles/battleships/battleships.py +39 -53
- puzzle_solver/puzzles/binairo/binairo.py +2 -2
- puzzle_solver/puzzles/black_box/black_box.py +6 -70
- puzzle_solver/puzzles/connect_the_dots/connect_the_dots.py +4 -2
- puzzle_solver/puzzles/filling/filling.py +11 -34
- puzzle_solver/puzzles/galaxies/galaxies.py +4 -2
- puzzle_solver/puzzles/heyawake/heyawake.py +72 -14
- puzzle_solver/puzzles/kakurasu/kakurasu.py +5 -13
- puzzle_solver/puzzles/kakuro/kakuro.py +6 -2
- puzzle_solver/puzzles/lits/lits.py +4 -2
- puzzle_solver/puzzles/mosaic/mosaic.py +8 -18
- puzzle_solver/puzzles/nonograms/nonograms.py +80 -85
- puzzle_solver/puzzles/nonograms/nonograms_colored.py +221 -0
- puzzle_solver/puzzles/norinori/norinori.py +5 -12
- puzzle_solver/puzzles/nurikabe/nurikabe.py +6 -2
- puzzle_solver/puzzles/palisade/palisade.py +8 -22
- puzzle_solver/puzzles/pearl/pearl.py +15 -27
- puzzle_solver/puzzles/pipes/pipes.py +2 -1
- puzzle_solver/puzzles/range/range.py +19 -55
- puzzle_solver/puzzles/rectangles/rectangles.py +4 -2
- puzzle_solver/puzzles/shingoki/shingoki.py +62 -105
- puzzle_solver/puzzles/singles/singles.py +6 -2
- puzzle_solver/puzzles/slant/slant.py +13 -19
- puzzle_solver/puzzles/slitherlink/slitherlink.py +2 -2
- puzzle_solver/puzzles/star_battle/star_battle.py +5 -2
- puzzle_solver/puzzles/stitches/stitches.py +8 -21
- puzzle_solver/puzzles/sudoku/sudoku.py +5 -11
- puzzle_solver/puzzles/tapa/tapa.py +6 -2
- puzzle_solver/puzzles/tents/tents.py +50 -80
- puzzle_solver/puzzles/tracks/tracks.py +19 -66
- puzzle_solver/puzzles/unruly/unruly.py +17 -49
- puzzle_solver/puzzles/yin_yang/yin_yang.py +3 -10
- multi_puzzle_solver-1.0.4.dist-info/RECORD +0 -72
- {multi_puzzle_solver-1.0.4.dist-info → multi_puzzle_solver-1.0.7.dist-info}/WHEEL +0 -0
- {multi_puzzle_solver-1.0.4.dist-info → multi_puzzle_solver-1.0.7.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
puzzle_solver/__init__.py,sha256=CiplXqjf9w0kuDmtvive0gM8hkZEIRQNgaK1A_X_ZwE,5390
|
|
2
|
+
puzzle_solver/core/utils.py,sha256=FE0106dfQRsgCn2FRBvRq5zILLK7-Z3cPHkAlBWUX0w,8785
|
|
3
|
+
puzzle_solver/core/utils_ortools.py,sha256=ACV3HgKWpEUTt1lpqsPryK1DeZpu7kdWQKEWTLJ2tfs,10384
|
|
4
|
+
puzzle_solver/core/utils_visualizer.py,sha256=AmVeBuEMaJzVY2zBbRoONlC9x3AGLKcdaNn8mD-nrLs,23347
|
|
5
|
+
puzzle_solver/puzzles/abc_view/abc_view.py,sha256=Qr0rZKmKQ2teStHjQ5VPQ4k-XptsjJAlZ1WXWk5Aax4,4570
|
|
6
|
+
puzzle_solver/puzzles/aquarium/aquarium.py,sha256=dGqYEWMoh4di5DN4sd-GtYb6QeTpVYFQJHBkrrmrudQ,5649
|
|
7
|
+
puzzle_solver/puzzles/battleships/battleships.py,sha256=U4xJ_NJC2baHvfaAfJ01YEBjixq9gD0h8GP9L1V-_oM,7223
|
|
8
|
+
puzzle_solver/puzzles/binairo/binairo.py,sha256=qKvpixLIBUcugAyJgpBGHV-9q_4nzA1ZOxeDFnltsXA,6843
|
|
9
|
+
puzzle_solver/puzzles/binairo/binairo_plus.py,sha256=TvLG3olwANtft3LuCF-y4OofpU9PNa4IXDqgZqsD-g0,267
|
|
10
|
+
puzzle_solver/puzzles/black_box/black_box.py,sha256=RXTXQhMAb_Oce9Mk1XpouniYIyy9k3kYGdey-SEeRMU,12559
|
|
11
|
+
puzzle_solver/puzzles/bridges/bridges.py,sha256=QwOhZyO5urbatkNyPmQxZ_lGM01ZejndMr_eoiBkr7g,5394
|
|
12
|
+
puzzle_solver/puzzles/chess_range/chess_melee.py,sha256=D-_Oi8OyxsVe1j3dIKYwRlxgeb3NWLmDWGcv-oclY0c,195
|
|
13
|
+
puzzle_solver/puzzles/chess_range/chess_range.py,sha256=_VHlpUPnqeBstvSIt9RtTV-w2etSK7UrEHg6sErNqtU,21068
|
|
14
|
+
puzzle_solver/puzzles/chess_range/chess_solo.py,sha256=ByDfcRsk5FVmFicpU_DpLoLTJ99Kr___vX4y8ln8_EQ,400
|
|
15
|
+
puzzle_solver/puzzles/chess_sequence/chess_sequence.py,sha256=6ap3Wouf2PxHV4P56B9ol1QT98Ym6VHaxorQZWl6LnY,13692
|
|
16
|
+
puzzle_solver/puzzles/connect_the_dots/connect_the_dots.py,sha256=0axF_jtB34mUM6s3j4grjkIWTCjvaw4NZ4oVogZsNvs,2677
|
|
17
|
+
puzzle_solver/puzzles/dominosa/dominosa.py,sha256=Nmb7pn8U27QJwGy9F3wo8ylqo2_U51OAo3GN2soaNpc,7195
|
|
18
|
+
puzzle_solver/puzzles/filling/filling.py,sha256=ILgGJqVI7yd6HPvWeKEsr620qorxLtAQYKTq65PqarY,4952
|
|
19
|
+
puzzle_solver/puzzles/flip/flip.py,sha256=ZngJLUhRNc7qqo2wtNLdMPx4u9w9JTUge27PmdXyDCw,3985
|
|
20
|
+
puzzle_solver/puzzles/flood_it/flood_it.py,sha256=jnCtH1sZIt6K4hbQDSsiM1Cd8FjQNP7cfw2ObUW5fEQ,7948
|
|
21
|
+
puzzle_solver/puzzles/flood_it/parse_map/parse_map.py,sha256=m7gcpvN3THZdYLowdR_Jwx3HyttaV4K2DqrX_U7uFqU,8209
|
|
22
|
+
puzzle_solver/puzzles/galaxies/galaxies.py,sha256=IiKPU3fz5Aokhj5OjeT5jd_vdNuWnLzjZylGOTepsNU,5600
|
|
23
|
+
puzzle_solver/puzzles/galaxies/parse_map/parse_map.py,sha256=XmFqVN_oRfq9AZFWy5ViUJ2Szjgx-srrRkFPJXEEyFo,9358
|
|
24
|
+
puzzle_solver/puzzles/guess/guess.py,sha256=MpyrF6YVu0S1fzX-BllwxGKRGacWJpeLbNn5GetuEyo,10792
|
|
25
|
+
puzzle_solver/puzzles/heyawake/heyawake.py,sha256=cBD0xHYvVOBAOiwAB_K9sjf1Hv3zL4GBiq1Dml27F6g,9085
|
|
26
|
+
puzzle_solver/puzzles/inertia/inertia.py,sha256=-Y5fr7aK20zwmGHsZql7pYCq1kyMZglvkVZ6uIDf1HA,5658
|
|
27
|
+
puzzle_solver/puzzles/inertia/tsp.py,sha256=mAhlSjCWespASeN8uLZ0JkYDw-ZqFEpal6NM-ubpCXw,15313
|
|
28
|
+
puzzle_solver/puzzles/inertia/parse_map/parse_map.py,sha256=x0d64gTBd0HC2lO5uOpX2VKWfwj8rRiz0mQM_lqNmWs,8457
|
|
29
|
+
puzzle_solver/puzzles/kakurasu/kakurasu.py,sha256=ts4oPrFNeakNGi1rgAd6CIVQgeWSgnBGtA3qev_6ffY,1894
|
|
30
|
+
puzzle_solver/puzzles/kakuro/kakuro.py,sha256=9Sk-Q3EQsflyaJo5zywV-OpJn4WnNbbNAfiMFzN00F4,4440
|
|
31
|
+
puzzle_solver/puzzles/keen/keen.py,sha256=adSA_pc1m6F6jV7a-PpQxdci1bv4psCNRNt9hMIQdSY,5034
|
|
32
|
+
puzzle_solver/puzzles/light_up/light_up.py,sha256=iSA1rjZMFsnI0V0Nxivxox4qZkB7PvUrROSHXcoUXds,4541
|
|
33
|
+
puzzle_solver/puzzles/lits/lits.py,sha256=QeXFiCnWNI9jzUj3QLgU20mXxE2DD9o4BJsUb0TswKk,7231
|
|
34
|
+
puzzle_solver/puzzles/magnets/magnets.py,sha256=-Wl49JD_PKeq735zQVMQ3XSQX6gdHiY-7PKw-Sh16jw,6474
|
|
35
|
+
puzzle_solver/puzzles/map/map.py,sha256=sxc57tapB8Tsgam-yoDitln1o-EB_SbIYvO6WEYy3us,2582
|
|
36
|
+
puzzle_solver/puzzles/minesweeper/minesweeper.py,sha256=gSdFsuZ-KrwVxgI1HF2q_pYleZ6vBm9jjRTFlboVnLY,5871
|
|
37
|
+
puzzle_solver/puzzles/mosaic/mosaic.py,sha256=T89tkyTbob3LT20vwY3hkkEtNi8bxp2_CLaVi1gzhBc,1974
|
|
38
|
+
puzzle_solver/puzzles/nonograms/nonograms.py,sha256=Q-VHI0IPR2igccnE617HPThj5tnBgt27MiLWIZPtYcI,5587
|
|
39
|
+
puzzle_solver/puzzles/nonograms/nonograms_colored.py,sha256=Qy3CGNNs0MoZQv-qHyMMP8-fK7s7f_utK-Rc1hQaX_A,10750
|
|
40
|
+
puzzle_solver/puzzles/norinori/norinori.py,sha256=ZEDWrD7zvEuqXOdXGOrELh1n_mWzhzZa3chs6Zqd3Pc,4570
|
|
41
|
+
puzzle_solver/puzzles/nurikabe/nurikabe.py,sha256=hX0VcjPwO8PfY2kiIpQV45FWIvKRosFebk588tp5wzk,6603
|
|
42
|
+
puzzle_solver/puzzles/palisade/palisade.py,sha256=Stvgw0k_sml9Dj5RMRVf0EmU5a_eGf1fn65IXelR6Wk,4802
|
|
43
|
+
puzzle_solver/puzzles/pearl/pearl.py,sha256=slPVCzPObQLNk4EYqe55YR4JeRCUs07Mjdks1fWKZSY,6696
|
|
44
|
+
puzzle_solver/puzzles/pipes/pipes.py,sha256=2HDHCWhD-fLYTRoJsx15gOrsgt_SbjlGF2QDS5UX6m8,4680
|
|
45
|
+
puzzle_solver/puzzles/range/range.py,sha256=sJVMKzoT5unihMKurriAUTGLY0f7OQXSZfSHWezPPkw,3387
|
|
46
|
+
puzzle_solver/puzzles/rectangles/rectangles.py,sha256=6MuJHyw7woIljlqxt76zfhw8F2_2biKMFM7oiXdXZsg,7010
|
|
47
|
+
puzzle_solver/puzzles/shakashaka/shakashaka.py,sha256=PRpg_qI7XA3ysAo_g1TRJsT3VwB5Vial2UcFyBOMwKQ,9571
|
|
48
|
+
puzzle_solver/puzzles/shingoki/shingoki.py,sha256=Sra6i4kpVzIK6CabhK9yDVDLBuZiNS4daPimtnTgQu0,6777
|
|
49
|
+
puzzle_solver/puzzles/signpost/signpost.py,sha256=38LlMvP5Fx4qrTXmw4aNCt3yUbG3fhdSk6-YXmhAHFg,3861
|
|
50
|
+
puzzle_solver/puzzles/singles/singles.py,sha256=AugO2Gnd_OEyrxXUnqg3oPypdmeiFais_fu19-gm4Eg,2945
|
|
51
|
+
puzzle_solver/puzzles/slant/slant.py,sha256=l4q9g0BfqQsA6zsySiemJC5iFsqsO6LoqTUqcTEqYEk,5897
|
|
52
|
+
puzzle_solver/puzzles/slant/parse_map/parse_map.py,sha256=8thQxWbq0qjehKb2VzgUP22PGj-9n9djwbt3LGMVLJw,4811
|
|
53
|
+
puzzle_solver/puzzles/slitherlink/slitherlink.py,sha256=AQsOMHB_vP4bDHbhq5hTRRblv01DecdEzy6F4k23OA0,7118
|
|
54
|
+
puzzle_solver/puzzles/star_battle/star_battle.py,sha256=GqrattaxVM7eHtPQYUWHAlLG8DQkDm7p1B3R8VeU9g8,4018
|
|
55
|
+
puzzle_solver/puzzles/star_battle/star_battle_shapeless.py,sha256=lj05V0Y3A3NjMo1boMkPIwBhMtm6SWydjgAMeCf5EIo,225
|
|
56
|
+
puzzle_solver/puzzles/stitches/stitches.py,sha256=wj9z9979FaVtp2hcVu3YDTGlxtwljoQNBgMMM5U3icc,6109
|
|
57
|
+
puzzle_solver/puzzles/stitches/parse_map/parse_map.py,sha256=b21SQvlnDM6wOl_1iUhZ7X6akpBZoOnj3kEzImBCh8Q,10497
|
|
58
|
+
puzzle_solver/puzzles/sudoku/sudoku.py,sha256=lj3DD98sdA9jNre8Nwe8s_OKpYe7K4iPCmXtJMKfIDs,13344
|
|
59
|
+
puzzle_solver/puzzles/tapa/tapa.py,sha256=554Xun39M3oJ5kOUwrhLUtbUXbsAYj4DH-GBhtJbjoY,5439
|
|
60
|
+
puzzle_solver/puzzles/tents/tents.py,sha256=81hAtmNNYIgzh0tEa0BuExmdzQfGVrlwjn_Dw8hEp3c,4943
|
|
61
|
+
puzzle_solver/puzzles/thermometers/thermometers.py,sha256=bGcVmpPeqL5AJtj8jkK8gYThzv9aGCd_QrWEiYBCA2s,4011
|
|
62
|
+
puzzle_solver/puzzles/towers/towers.py,sha256=OLyTf9nTFR5L32-S_fhVyBmpz4i5YUNJotwOwbw_Fjg,6500
|
|
63
|
+
puzzle_solver/puzzles/tracks/tracks.py,sha256=u34nOCvLHQrQFdInGpM3Y1dX_A30SNh4o6W4l7BSPmE,5516
|
|
64
|
+
puzzle_solver/puzzles/twiddle/twiddle.py,sha256=3gPoeD0DoiiZbIhtptdXFldO_t1QShL6IxkDqJMzjkk,5446
|
|
65
|
+
puzzle_solver/puzzles/undead/undead.py,sha256=IGFQysgoaKZH8rKjqlrkoHsH28ve4_hKor2f0QOsWY0,6596
|
|
66
|
+
puzzle_solver/puzzles/unequal/unequal.py,sha256=ExY2XDCrqROCDpRLfHo8uVr1zuli1QvbCdNCiDhlCac,6978
|
|
67
|
+
puzzle_solver/puzzles/unruly/unruly.py,sha256=_C6FhYm9rqwhlQa6TMTxYr3rWcP_QS-E93xo86CZQjg,2846
|
|
68
|
+
puzzle_solver/puzzles/yin_yang/yin_yang.py,sha256=D0JacUdK5yPrfScmGqX-p8144VbwxfDgIaqF8hwLXlM,5039
|
|
69
|
+
puzzle_solver/puzzles/yin_yang/parse_map/parse_map.py,sha256=drjfoHqmFf6U-ZQUwrBbfGINRxDQpgbvy4U3D9QyMhM,6617
|
|
70
|
+
puzzle_solver/utils/visualizer.py,sha256=T2g5We9J3tkhyXWoN2OrIDIJDjt6w5sDd2ksOub0ZI8,6819
|
|
71
|
+
multi_puzzle_solver-1.0.7.dist-info/METADATA,sha256=WfWXNWvZZPMkq8SmkWShIMpG6S4dDZcvayWDFIyM9-A,452620
|
|
72
|
+
multi_puzzle_solver-1.0.7.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
73
|
+
multi_puzzle_solver-1.0.7.dist-info/top_level.txt,sha256=exwVUQa-anK9vYrpKzBPvH8bX43iElWI4VeNiAyBGJY,14
|
|
74
|
+
multi_puzzle_solver-1.0.7.dist-info/RECORD,,
|
puzzle_solver/__init__.py
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
from puzzle_solver.puzzles.abc_view import abc_view as abc_view_solver
|
|
1
2
|
from puzzle_solver.puzzles.aquarium import aquarium as aquarium_solver
|
|
2
3
|
from puzzle_solver.puzzles.battleships import battleships as battleships_solver
|
|
3
4
|
from puzzle_solver.puzzles.binairo import binairo as binairo_solver
|
|
@@ -25,6 +26,7 @@ from puzzle_solver.puzzles.map import map as map_solver
|
|
|
25
26
|
from puzzle_solver.puzzles.minesweeper import minesweeper as minesweeper_solver
|
|
26
27
|
from puzzle_solver.puzzles.mosaic import mosaic as mosaic_solver
|
|
27
28
|
from puzzle_solver.puzzles.nonograms import nonograms as nonograms_solver
|
|
29
|
+
from puzzle_solver.puzzles.nonograms import nonograms_colored as nonograms_colored_solver
|
|
28
30
|
from puzzle_solver.puzzles.norinori import norinori as norinori_solver
|
|
29
31
|
from puzzle_solver.puzzles.nurikabe import nurikabe as nurikabe_solver
|
|
30
32
|
from puzzle_solver.puzzles.palisade import palisade as palisade_solver
|
|
@@ -57,6 +59,7 @@ from puzzle_solver.puzzles.yin_yang import yin_yang as yin_yang_solver
|
|
|
57
59
|
from puzzle_solver.puzzles.inertia.parse_map.parse_map import main as inertia_image_parser
|
|
58
60
|
|
|
59
61
|
__all__ = [
|
|
62
|
+
abc_view_solver,
|
|
60
63
|
aquarium_solver,
|
|
61
64
|
battleships_solver,
|
|
62
65
|
binairo_solver,
|
|
@@ -85,6 +88,7 @@ __all__ = [
|
|
|
85
88
|
mosaic_solver,
|
|
86
89
|
nonograms_solver,
|
|
87
90
|
norinori_solver,
|
|
91
|
+
nonograms_colored_solver,
|
|
88
92
|
nurikabe_solver,
|
|
89
93
|
palisade_solver,
|
|
90
94
|
lits_solver,
|
|
@@ -115,4 +119,4 @@ __all__ = [
|
|
|
115
119
|
inertia_image_parser,
|
|
116
120
|
]
|
|
117
121
|
|
|
118
|
-
__version__ = '1.0.
|
|
122
|
+
__version__ = '1.0.7'
|
puzzle_solver/core/utils.py
CHANGED
|
@@ -101,7 +101,7 @@ def in_bounds(pos: Pos, V: int, H: int = None) -> bool:
|
|
|
101
101
|
return 0 <= pos.y < V and 0 <= pos.x < H
|
|
102
102
|
|
|
103
103
|
|
|
104
|
-
def get_opposite_direction(direction: Direction) -> Direction:
|
|
104
|
+
def get_opposite_direction(direction: Union[Direction, Direction8]) -> Union[Direction, Direction8]:
|
|
105
105
|
if direction == Direction.RIGHT:
|
|
106
106
|
return Direction.LEFT
|
|
107
107
|
elif direction == Direction.LEFT:
|
|
@@ -110,6 +110,22 @@ def get_opposite_direction(direction: Direction) -> Direction:
|
|
|
110
110
|
return Direction.UP
|
|
111
111
|
elif direction == Direction.UP:
|
|
112
112
|
return Direction.DOWN
|
|
113
|
+
elif direction == Direction8.RIGHT:
|
|
114
|
+
return Direction8.LEFT
|
|
115
|
+
elif direction == Direction8.LEFT:
|
|
116
|
+
return Direction8.RIGHT
|
|
117
|
+
elif direction == Direction8.DOWN:
|
|
118
|
+
return Direction8.UP
|
|
119
|
+
elif direction == Direction8.UP:
|
|
120
|
+
return Direction8.DOWN
|
|
121
|
+
elif direction == Direction8.UP_LEFT:
|
|
122
|
+
return Direction8.DOWN_RIGHT
|
|
123
|
+
elif direction == Direction8.UP_RIGHT:
|
|
124
|
+
return Direction8.DOWN_LEFT
|
|
125
|
+
elif direction == Direction8.DOWN_LEFT:
|
|
126
|
+
return Direction8.UP_RIGHT
|
|
127
|
+
elif direction == Direction8.DOWN_RIGHT:
|
|
128
|
+
return Direction8.UP_LEFT
|
|
113
129
|
else:
|
|
114
130
|
raise ValueError(f'invalid direction: {direction}')
|
|
115
131
|
|