chuk-puzzles-gym 0.9__py3-none-any.whl → 0.10.1__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.
Files changed (55) hide show
  1. chuk_puzzles_gym/eval.py +21 -0
  2. chuk_puzzles_gym/games/__init__.py +22 -0
  3. chuk_puzzles_gym/games/binary/game.py +2 -0
  4. chuk_puzzles_gym/games/bridges/game.py +2 -0
  5. chuk_puzzles_gym/games/cryptarithmetic/__init__.py +7 -0
  6. chuk_puzzles_gym/games/cryptarithmetic/commands.py +75 -0
  7. chuk_puzzles_gym/games/cryptarithmetic/config.py +23 -0
  8. chuk_puzzles_gym/games/cryptarithmetic/game.py +388 -0
  9. chuk_puzzles_gym/games/einstein/game.py +2 -0
  10. chuk_puzzles_gym/games/fillomino/game.py +2 -0
  11. chuk_puzzles_gym/games/futoshiki/game.py +2 -0
  12. chuk_puzzles_gym/games/graph_coloring/__init__.py +7 -0
  13. chuk_puzzles_gym/games/graph_coloring/commands.py +96 -0
  14. chuk_puzzles_gym/games/graph_coloring/config.py +24 -0
  15. chuk_puzzles_gym/games/graph_coloring/game.py +316 -0
  16. chuk_puzzles_gym/games/hidato/game.py +2 -0
  17. chuk_puzzles_gym/games/hitori/game.py +2 -0
  18. chuk_puzzles_gym/games/kakuro/game.py +2 -0
  19. chuk_puzzles_gym/games/kenken/game.py +2 -0
  20. chuk_puzzles_gym/games/killer_sudoku/game.py +2 -0
  21. chuk_puzzles_gym/games/knapsack/game.py +2 -0
  22. chuk_puzzles_gym/games/lights_out/game.py +2 -0
  23. chuk_puzzles_gym/games/logic_grid/game.py +2 -0
  24. chuk_puzzles_gym/games/mastermind/game.py +2 -0
  25. chuk_puzzles_gym/games/minesweeper/game.py +2 -0
  26. chuk_puzzles_gym/games/nonogram/game.py +2 -0
  27. chuk_puzzles_gym/games/nqueens/__init__.py +6 -0
  28. chuk_puzzles_gym/games/nqueens/config.py +23 -0
  29. chuk_puzzles_gym/games/nqueens/game.py +321 -0
  30. chuk_puzzles_gym/games/numberlink/__init__.py +6 -0
  31. chuk_puzzles_gym/games/numberlink/config.py +23 -0
  32. chuk_puzzles_gym/games/numberlink/game.py +344 -0
  33. chuk_puzzles_gym/games/nurikabe/game.py +2 -0
  34. chuk_puzzles_gym/games/rush_hour/__init__.py +8 -0
  35. chuk_puzzles_gym/games/rush_hour/commands.py +57 -0
  36. chuk_puzzles_gym/games/rush_hour/config.py +25 -0
  37. chuk_puzzles_gym/games/rush_hour/game.py +479 -0
  38. chuk_puzzles_gym/games/rush_hour/models.py +15 -0
  39. chuk_puzzles_gym/games/scheduler/game.py +2 -0
  40. chuk_puzzles_gym/games/shikaku/game.py +2 -0
  41. chuk_puzzles_gym/games/skyscrapers/__init__.py +6 -0
  42. chuk_puzzles_gym/games/skyscrapers/config.py +22 -0
  43. chuk_puzzles_gym/games/skyscrapers/game.py +282 -0
  44. chuk_puzzles_gym/games/slitherlink/game.py +2 -0
  45. chuk_puzzles_gym/games/sokoban/game.py +2 -0
  46. chuk_puzzles_gym/games/star_battle/game.py +2 -0
  47. chuk_puzzles_gym/games/sudoku/game.py +2 -0
  48. chuk_puzzles_gym/games/tents/game.py +2 -0
  49. chuk_puzzles_gym/server.py +18 -70
  50. chuk_puzzles_gym/trace/generator.py +87 -0
  51. {chuk_puzzles_gym-0.9.dist-info → chuk_puzzles_gym-0.10.1.dist-info}/METADATA +60 -19
  52. {chuk_puzzles_gym-0.9.dist-info → chuk_puzzles_gym-0.10.1.dist-info}/RECORD +55 -33
  53. {chuk_puzzles_gym-0.9.dist-info → chuk_puzzles_gym-0.10.1.dist-info}/WHEEL +1 -1
  54. {chuk_puzzles_gym-0.9.dist-info → chuk_puzzles_gym-0.10.1.dist-info}/entry_points.txt +0 -0
  55. {chuk_puzzles_gym-0.9.dist-info → chuk_puzzles_gym-0.10.1.dist-info}/top_level.txt +0 -0
@@ -711,6 +711,93 @@ class TraceGenerator:
711
711
  """Generate trace for Einstein's Puzzle (handles 'einstein's puzzle' -> 'einsteins_puzzle')."""
712
712
  return self._generate_einstein(game)
713
713
 
714
+ def _generate_graph_coloring(self, game: PuzzleGame) -> Trace:
715
+ """Generate trace for Graph Coloring puzzle."""
716
+ problem_id = f"graph_coloring_{game.difficulty.value}_{game.seed}"
717
+ steps: list[Step] = []
718
+
719
+ solution = getattr(game, "solution", {})
720
+ initial_coloring = getattr(game, "initial_coloring", {})
721
+ step_idx = 0
722
+
723
+ for node in sorted(solution.keys()):
724
+ if node not in initial_coloring:
725
+ color = solution[node]
726
+ step = Step(
727
+ index=step_idx,
728
+ operation=StepOperation.PLACE,
729
+ before_state=f"node({node})=uncolored",
730
+ after_state=f"node({node})=color{color}",
731
+ output_value=color,
732
+ position=(node,),
733
+ rule_applied="graph_coloring_constraint",
734
+ explanation=f"Color node {node} with color {color}, avoiding conflicts with adjacent nodes.",
735
+ )
736
+ steps.append(step)
737
+ step_idx += 1
738
+
739
+ return Trace(
740
+ problem_id=problem_id,
741
+ steps=steps,
742
+ checkpoints=self._identify_checkpoints(steps),
743
+ )
744
+
745
+ def _generate_cryptarithmetic(self, game: PuzzleGame) -> Trace:
746
+ """Generate trace for Cryptarithmetic puzzle."""
747
+ problem_id = f"cryptarithmetic_{game.difficulty.value}_{game.seed}"
748
+ steps: list[Step] = []
749
+
750
+ letter_mapping = getattr(game, "letter_mapping", {})
751
+ initial_mapping = getattr(game, "initial_mapping", {})
752
+ step_idx = 0
753
+
754
+ for letter in sorted(letter_mapping.keys()):
755
+ if letter not in initial_mapping:
756
+ digit = letter_mapping[letter]
757
+ step = Step(
758
+ index=step_idx,
759
+ operation=StepOperation.DEDUCE,
760
+ before_state=f"letter({letter})=unknown",
761
+ after_state=f"letter({letter})={digit}",
762
+ output_value=digit,
763
+ rule_applied="arithmetic_constraint",
764
+ explanation=f"Assign digit {digit} to letter {letter} to satisfy the equation.",
765
+ )
766
+ steps.append(step)
767
+ step_idx += 1
768
+
769
+ return Trace(
770
+ problem_id=problem_id,
771
+ steps=steps,
772
+ checkpoints=self._identify_checkpoints(steps),
773
+ )
774
+
775
+ def _generate_rush_hour(self, game: PuzzleGame) -> Trace:
776
+ """Generate trace for Rush Hour puzzle."""
777
+ problem_id = f"rush_hour_{game.difficulty.value}_{game.seed}"
778
+ steps: list[Step] = []
779
+
780
+ # Rush Hour traces are move sequences; generate from hint system
781
+ vehicles = getattr(game, "vehicles", {})
782
+ if vehicles:
783
+ step = Step(
784
+ index=0,
785
+ operation=StepOperation.DEDUCE,
786
+ before_state="target_car=blocked",
787
+ after_state="target_car=exit",
788
+ output_value="solve",
789
+ rule_applied="sequential_planning",
790
+ explanation=f"Slide vehicles to clear a path for car X to reach the exit. "
791
+ f"Minimum solution: {getattr(game, 'min_solution_moves', '?')} moves.",
792
+ )
793
+ steps.append(step)
794
+
795
+ return Trace(
796
+ problem_id=problem_id,
797
+ steps=steps,
798
+ checkpoints=self._identify_checkpoints(steps),
799
+ )
800
+
714
801
 
715
802
  def generate_trace(game: PuzzleGame) -> Trace:
716
803
  """
@@ -1,7 +1,7 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: chuk-puzzles-gym
3
- Version: 0.9
4
- Summary: Multi-game puzzle gym for LLM training and benchmarking - 24 constraint puzzles with synthetic data generation
3
+ Version: 0.10.1
4
+ Summary: Multi-game puzzle gym for LLM training and benchmarking - 30 constraint puzzles with synthetic data generation
5
5
  Author: Chris Hay
6
6
  License: MIT
7
7
  Project-URL: Homepage, https://github.com/chrishayuk/chuk-puzzles-gym
@@ -39,7 +39,7 @@ Requires-Dist: ipython>=8.14.0; extra == "dev"
39
39
  [![Pydantic v2](https://img.shields.io/badge/pydantic-v2-purple.svg)](https://docs.pydantic.dev/)
40
40
  [![Type Checked](https://img.shields.io/badge/type%20checked-mypy-blue.svg)](http://mypy-lang.org/)
41
41
 
42
- A **multi-game puzzle gym** for **LLM training and benchmarking**, hosting 24 different logic puzzle types with synthetic data generation. Built using [chuk-gym-core](https://github.com/chrishayuk/chuk-gym-core) and [chuk-protocol-server](https://github.com/chrishayuk/chuk-protocol-server).
42
+ A **multi-game puzzle gym** for **LLM training and benchmarking**, hosting 30 different logic puzzle types with synthetic data generation. Built using [chuk-gym-core](https://github.com/chrishayuk/chuk-gym-core) and [chuk-protocol-server](https://github.com/chrishayuk/chuk-protocol-server).
43
43
 
44
44
  **Perfect for:**
45
45
  - 🤖 **LLM Agent Testing** - Benchmark reasoning capabilities across constraint types
@@ -82,12 +82,13 @@ Once connected, type `help` to see available games, or `sudoku easy` to start pl
82
82
 
83
83
  ## Features
84
84
 
85
- - **24 Puzzle Games** with three difficulty levels each (easy, medium, hard)
85
+ - **30 Puzzle Games** with three difficulty levels each (easy, medium, hard)
86
86
  - **7 Classic Logic Puzzles** - Sudoku, KenKen, Kakuro, Binary, Futoshiki, Nonogram, Logic Grid
87
87
  - **7 Advanced CP-SAT Puzzles** - Killer Sudoku, Lights Out, Mastermind, Slitherlink, Bridges, Hitori, Shikaku
88
88
  - **5 Specialized Constraint Puzzles** - Hidato, Tents and Trees, Fillomino, Star Battle, Sokoban
89
89
  - **2 Optimization Challenges** - Knapsack, Task Scheduler
90
90
  - **3 Advanced Reasoning Puzzles** - Nurikabe, Einstein's Puzzle, Minesweeper
91
+ - **6 Combinatorial & Search Puzzles** - Skyscrapers, N-Queens, Numberlink, Graph Coloring, Cryptarithmetic, Rush Hour
91
92
  - **Agent-Friendly Mode** - Structured output with clear markers for AI agents and tools
92
93
  - Enable with `mode agent` command
93
94
  - Machine-parseable grid format with clear start/end markers
@@ -113,7 +114,7 @@ Once connected, type `help` to see available games, or `sudoku easy` to start pl
113
114
  - **Clean ASCII art grids** - perfectly aligned for easy parsing
114
115
  - **Deterministic seeding** - Replay any puzzle with the same seed
115
116
  - **Gymnasium-compatible RL Environment** (`PuzzleEnv`) for training agents
116
- - **Comprehensive test suite** (1067 tests, 94% coverage)
117
+ - **Comprehensive test suite** (1323 tests, 94% coverage)
117
118
  - **Modern Python best practices:**
118
119
  - **Pydantic v2 native** - All models use ConfigDict for type safety
119
120
  - **Async native** - Full async/await support throughout
@@ -173,6 +174,17 @@ Once connected, type `help` to see available games, or `sudoku easy` to start pl
173
174
  | **Einstein's Puzzle** | 5 houses × 5 attributes | Multi-attribute deduction + Logic chains | ✅ Complete |
174
175
  | **Minesweeper** | 6×6 to 10×10 | Probabilistic reasoning + Safe deduction | ✅ Complete |
175
176
 
177
+ ### Combinatorial & Search Puzzles
178
+
179
+ | Game | Grid Size | Constraint Types | Status |
180
+ |------|-----------|------------------|--------|
181
+ | **Skyscrapers** | 4×4 to 6×6 | Latin square + Visibility clues from 4 borders | ✅ Complete |
182
+ | **N-Queens** | 6×6 to 12×12 | Placement + Row/Column/Diagonal attack avoidance | ✅ Complete |
183
+ | **Numberlink** | 5×5 to 9×9 | Path connectivity + Non-crossing + Space filling | ✅ Complete |
184
+ | **Graph Coloring** | 6-15 nodes | Graph coloring + Inequality + Global constraint | ✅ Complete |
185
+ | **Cryptarithmetic** | 3-5 digit words | Arithmetic + AllDifferent + Carry propagation | ✅ Complete |
186
+ | **Rush Hour** | 6×6 | Sequential planning + Spatial blocking + Search | ✅ Complete |
187
+
176
188
  ## Solver Profiles & Business Mapping
177
189
 
178
190
  Each game includes metadata for **constraint types**, **business analogies**, and **complexity profiles**, making it easy to:
@@ -216,7 +228,13 @@ resource_games = [
216
228
  | **Global Loop** | Slitherlink | Circuit design, Path finding |
217
229
  | **Boolean SAT** | Lights Out | Feature dependencies, Toggle systems |
218
230
  | **Cage Sums** | Killer Sudoku, Kakuro | Team budgets, Grouped constraints |
219
- | **AllDifferent** | Sudoku, KenKen | Resource uniqueness, Assignment problems |
231
+ | **AllDifferent** | Sudoku, KenKen, Skyscrapers | Resource uniqueness, Assignment problems |
232
+ | **Visibility/Ordering** | Skyscrapers | Priority ranking, Stack-based processing |
233
+ | **Attack Avoidance** | N-Queens, Star Battle | Non-conflicting resource placement |
234
+ | **Path Connectivity** | Numberlink, Nurikabe | Network routing, Cable layout |
235
+ | **Graph Coloring** | Graph Coloring | Frequency assignment, Register allocation, Scheduling |
236
+ | **Arithmetic Deduction** | Cryptarithmetic, KenKen | Code breaking, Constraint propagation |
237
+ | **Sequential Planning** | Rush Hour, Sokoban | Logistics planning, Deadlock resolution |
220
238
 
221
239
  ## Quick Start
222
240
 
@@ -397,6 +415,14 @@ ADVANCED REASONING PUZZLES:
397
415
  23) Einstein's Puzzle - Who owns the fish? Multi-attribute deduction
398
416
  24) Minesweeper - Find all mines using logical deduction
399
417
 
418
+ COMBINATORIAL & SEARCH PUZZLES:
419
+ 25) Skyscrapers - Latin square with visibility clues from borders
420
+ 26) N-Queens - Place queens with no row/column/diagonal conflicts
421
+ 27) Numberlink - Connect pairs with non-crossing paths filling the grid
422
+ 28) Graph Coloring - Color nodes so no adjacent pair shares a color
423
+ 29) Cryptarithmetic - Assign digits to letters to satisfy an equation
424
+ 30) Rush Hour - Slide vehicles to free the target car to the exit
425
+
400
426
  Commands:
401
427
  <number> - Select game by number
402
428
  <name> - Select game by name (e.g., 'sudoku')
@@ -453,7 +479,7 @@ The project includes a **Gymnasium-compatible environment** for training reinfor
453
479
  ```python
454
480
  from chuk_puzzles_gym.gym_env import PuzzleEnv
455
481
 
456
- # Create environment for any of the 24 games
482
+ # Create environment for any of the 30 games
457
483
  env = PuzzleEnv("sudoku", difficulty="easy", seed=42)
458
484
 
459
485
  # Reset to start a new episode
@@ -472,7 +498,7 @@ games = PuzzleEnv.available_games()
472
498
 
473
499
  ### Features
474
500
 
475
- - **All 24 games** accessible through unified API
501
+ - **All 30 games** accessible through unified API
476
502
  - **Configurable rewards** for correct moves, invalid attempts, completion bonuses
477
503
  - **Hint system** with optional budget limits
478
504
  - **Solver-free mode** for pure reasoning benchmarks
@@ -586,7 +612,7 @@ Generate synthetic puzzle datasets for training and benchmarking LLMs and constr
586
612
  ### CLI Usage
587
613
 
588
614
  ```bash
589
- # Generate 100 puzzles per game/difficulty for all 24 games
615
+ # Generate 100 puzzles per game/difficulty for all 30 games
590
616
  chuk-puzzles-export -o puzzles.jsonl
591
617
 
592
618
  # Specific games only
@@ -744,6 +770,9 @@ When `include_trace=True` (default), each problem includes step-by-step solution
744
770
  | Hitori | `duplicate_elimination` |
745
771
  | Bridges | `connectivity_constraint` |
746
772
  | Slitherlink | `loop_constraint` |
773
+ | Graph Coloring | `graph_coloring_constraint` |
774
+ | Cryptarithmetic | `arithmetic_constraint` |
775
+ | Rush Hour | `sequential_planning` |
747
776
  | Others | `constraint_propagation` |
748
777
 
749
778
  ### Example: Generate Training Data
@@ -772,9 +801,9 @@ With default settings (`-n 100` per game/difficulty):
772
801
 
773
802
  | Configuration | Problems Generated |
774
803
  |--------------|-------------------|
775
- | All games, all difficulties | 24 games × 3 difficulties × 100 = 7,200 |
804
+ | All games, all difficulties | 30 games × 3 difficulties × 100 = 9,000 |
776
805
  | Single game, all difficulties | 1 × 3 × 100 = 300 |
777
- | All games, single difficulty | 24 × 1 × 100 = 2,400 |
806
+ | All games, single difficulty | 30 × 1 × 100 = 3,000 |
778
807
 
779
808
  ### Integration with chuk-gym-core
780
809
 
@@ -983,7 +1012,7 @@ pip install -e ".[dev]"
983
1012
 
984
1013
  ### Testing
985
1014
 
986
- The project has comprehensive test coverage (94%, 1067 tests):
1015
+ The project has comprehensive test coverage (94%, 1323 tests):
987
1016
 
988
1017
  ```bash
989
1018
  # Run all tests
@@ -1034,7 +1063,7 @@ The project follows modern Python best practices with a **9.8/10 compliance scor
1034
1063
  - ✅ **Test Coverage** (9.5/10) - 94% overall, most files ≥90%
1035
1064
 
1036
1065
  #### Quality Metrics
1037
- - **1067 tests** - All passing ✅
1066
+ - **1323 tests** - All passing ✅
1038
1067
  - **94% coverage** - Exceeds 90% threshold ✅
1039
1068
  - **Zero linting errors** - Clean codebase ✅
1040
1069
  - **Full type safety** - MyPy passes ✅
@@ -1181,7 +1210,7 @@ chuk-puzzles-gym/
1181
1210
  │ │ ├── __init__.py
1182
1211
  │ │ ├── game.py
1183
1212
  │ │ └── config.py
1184
- │ └── ... (24 games total)
1213
+ │ └── ... (30 games total)
1185
1214
  ├── tests/
1186
1215
  │ ├── test_puzzle_game.py # Base class tests
1187
1216
  │ ├── test_deterministic_seeding.py # Seeding tests
@@ -1191,6 +1220,12 @@ chuk-puzzles-gym/
1191
1220
  ├── examples/
1192
1221
  │ ├── simple_client.py # Telnet client example
1193
1222
  │ ├── websocket_client.py # WebSocket client example
1223
+ │ ├── example_skyscrapers.py # Skyscrapers game logic demo
1224
+ │ ├── example_nqueens.py # N-Queens game logic demo
1225
+ │ ├── example_numberlink.py # Numberlink game logic demo
1226
+ │ ├── example_graph_coloring.py # Graph Coloring game logic demo
1227
+ │ ├── example_cryptarithmetic.py# Cryptarithmetic game logic demo
1228
+ │ ├── example_rush_hour.py # Rush Hour game logic demo
1194
1229
  │ └── README.md # Example usage guide
1195
1230
  ├── .github/workflows/ # CI/CD workflows
1196
1231
  ├── pyproject.toml # Modern Python project config
@@ -1203,14 +1238,15 @@ chuk-puzzles-gym/
1203
1238
 
1204
1239
  ### Key Statistics
1205
1240
 
1206
- - **Test Coverage**: 94% overall (1067 tests, all passing)
1241
+ - **Test Coverage**: 94% overall (1323 tests, all passing)
1207
1242
  - **Code Quality Score**: 9.8/10 (near perfect compliance)
1208
- - **Games Implemented**: 24 complete puzzle types
1243
+ - **Games Implemented**: 30 complete puzzle types
1209
1244
  - 7 Classic Logic Puzzles
1210
1245
  - 7 Advanced CP-SAT Puzzles
1211
1246
  - 5 Specialized Constraint Puzzles
1212
1247
  - 2 Optimization Challenges
1213
1248
  - 3 Advanced Reasoning Puzzles
1249
+ - 6 Combinatorial & Search Puzzles
1214
1250
  - **Supported Transports**: 4 (Telnet, TCP, WebSocket, WS-Telnet)
1215
1251
  - **Agent-Friendly Mode**: Structured output for AI tools
1216
1252
  - **Gymnasium API**: RL-compatible environment for all games
@@ -1243,7 +1279,7 @@ Test the generality of constraint solvers (like MCP solvers):
1243
1279
 
1244
1280
  Learn about constraint satisfaction problems:
1245
1281
 
1246
- - **24 different puzzle types** demonstrating various constraint types:
1282
+ - **30 different puzzle types** demonstrating various constraint types:
1247
1283
  - AllDifferent constraints (Sudoku, KenKen, Futoshiki)
1248
1284
  - Arithmetic constraints (KenKen, Kakuro, Killer Sudoku)
1249
1285
  - Boolean/SAT constraints (Lights Out, Binary Puzzle)
@@ -1253,9 +1289,14 @@ Learn about constraint satisfaction problems:
1253
1289
  - Temporal reasoning (Task Scheduler)
1254
1290
  - Connectivity constraints (Nurikabe, Slitherlink)
1255
1291
  - Probabilistic reasoning (Minesweeper)
1256
- - And more!
1292
+ - Graph coloring (Graph Coloring)
1293
+ - Arithmetic deduction (Cryptarithmetic)
1294
+ - Sequential planning (Rush Hour)
1295
+ - Visibility constraints (Skyscrapers)
1296
+ - Attack avoidance (N-Queens)
1297
+ - Path connectivity (Numberlink)
1257
1298
  - **Well-documented code** showing puzzle generation algorithms
1258
- - **Comprehensive tests** (1067 tests, 94% coverage) demonstrating validation
1299
+ - **Comprehensive tests** (1323 tests, 94% coverage) demonstrating validation
1259
1300
  - **Deterministic seeding** - Reproduce any puzzle for debugging/testing
1260
1301
  - **Production-ready** - 9.8/10 code quality score
1261
1302
  - **Type-safe** - Full Pydantic v2 and MyPy compliance
@@ -1,101 +1,123 @@
1
1
  chuk_puzzles_gym/__init__.py,sha256=zh2sc6QFKrtAmMLee7vlHgXuOBoB5CjSldlKFjZTVVE,521
2
2
  chuk_puzzles_gym/constants.py,sha256=58pKdvwoaB4PF1AK4b7mLNf_Y_YFyFassd1hYH1IUNE,280
3
- chuk_puzzles_gym/eval.py,sha256=Q5zNxkuGsvd88MHAkyHSZHl71F-iZO-O-HWCXszhK9s,25638
3
+ chuk_puzzles_gym/eval.py,sha256=jWjfQ4OaBNY2vDwcRxw1-MC27VorLNUMfRW-lQpK3Rs,26415
4
4
  chuk_puzzles_gym/gym_env.py,sha256=qoQZFz2Dnbl3QjTsDNHAxAx1qomU8paXVlH-SDcwlZI,17288
5
- chuk_puzzles_gym/server.py,sha256=Ax4cCj2ixAsVSOZUSS5IwBQo3B9B3nm6R-eYkiTDofM,47117
5
+ chuk_puzzles_gym/server.py,sha256=QnG48mXd8AKDVFUULIwLWidqDvcsCkayxbvo7h_EKBg,45947
6
6
  chuk_puzzles_gym/export/__init__.py,sha256=TTXBRR5CBBCL04r1iXMzxib9oOIDTC4npxy2_L1xc2A,366
7
7
  chuk_puzzles_gym/export/dataset.py,sha256=dZMz9m4JwpZZSigvaJjIpGKIoxUWB01gXoyNCZ4o17o,10998
8
- chuk_puzzles_gym/games/__init__.py,sha256=8D3-zR-zAamrBOlGmjDGIvTKffwS7GunepxVWZH9O90,2563
8
+ chuk_puzzles_gym/games/__init__.py,sha256=zByuxje5uVWQ4wBoGHUooHkAg5cgCljrCCXkyOLxLzo,3403
9
9
  chuk_puzzles_gym/games/_base/__init__.py,sha256=oNjoMvOVDb010ooyGxAfXBrOqmw1BAGavmaxf44tmz0,188
10
10
  chuk_puzzles_gym/games/_base/commands.py,sha256=tY0kxk08D8nPr_C_awo8qDUhkL6EHA59KnWiLlYnloY,2381
11
11
  chuk_puzzles_gym/games/_base/game.py,sha256=-YPJOgWsb4YVz8tS3cXJYd-y-1Tyx7eh8vs3tZEXcEA,11240
12
12
  chuk_puzzles_gym/games/binary/__init__.py,sha256=Pphgj0kcvHUgkM0Mq89GsWPt-Bg6DobDLi7cqliOywk,156
13
13
  chuk_puzzles_gym/games/binary/config.py,sha256=Iw8Wax1856aqaz1KvDC69Qou6z8gxIWr5rSAI0MGnWg,812
14
- chuk_puzzles_gym/games/binary/game.py,sha256=ohJnohzDED-IKLzcYnIUG-hZjyawWJr2GTvmFO-1j20,16299
14
+ chuk_puzzles_gym/games/binary/game.py,sha256=lRBweQIdzyRZm_jMPItZ1VAzAcsEEbxvGqjGwAlTTy0,16359
15
15
  chuk_puzzles_gym/games/bridges/__init__.py,sha256=ItdexP5RYfyTdxcvGY41fwQEi6tMCuMNdQpf8IDA70k,143
16
16
  chuk_puzzles_gym/games/bridges/config.py,sha256=JWhK6AmQzfFDs7uWiKqUayw4UQEcxPE6a5CdJ2HUm5A,910
17
- chuk_puzzles_gym/games/bridges/game.py,sha256=dgxJBa_ZzalfS7eX1f_LPAE2uk1R3mK7prrNgUc3j1k,18897
17
+ chuk_puzzles_gym/games/bridges/game.py,sha256=qEI8LFYKRASyTu0zomxvogWWdyPrEU989LlZ4TWascQ,18957
18
+ chuk_puzzles_gym/games/cryptarithmetic/__init__.py,sha256=vnM5L1jvSEPlMrB_FoxDTLqi7HA6uFb2_leyLdjCVmY,261
19
+ chuk_puzzles_gym/games/cryptarithmetic/commands.py,sha256=0feQk24ezYk_RubLv0I1URy_d2SPkswmecozYGx84p0,2514
20
+ chuk_puzzles_gym/games/cryptarithmetic/config.py,sha256=IBCqJCVfb9UZTRDaDGGGr8qOpVyci9WsRiLmHyeFowU,960
21
+ chuk_puzzles_gym/games/cryptarithmetic/game.py,sha256=aQvA2u-X5lmuxqMhH3IJkeOPJGkUOX6ZwLzrlhb1uYo,15202
18
22
  chuk_puzzles_gym/games/einstein/__init__.py,sha256=ETFLNXXeR7fE8cQZb0cIdeupSdtReV5zr5cwS0Fs108,148
19
23
  chuk_puzzles_gym/games/einstein/config.py,sha256=JCnFSXWz3Vjd3k53-ZdS_x6UpvGKOYaoVMNtX-3ZcBc,829
20
24
  chuk_puzzles_gym/games/einstein/constants.py,sha256=8IXKJwaGupSqxAYlTFdc7og6xiqJC7xqYa5-CdwxeQQ,607
21
- chuk_puzzles_gym/games/einstein/game.py,sha256=nKxs8MsgtS9ASuub-gEJAaWRyFLou11qVngBIwbYxuY,13902
25
+ chuk_puzzles_gym/games/einstein/game.py,sha256=ifMC9IOigbPOX0Z_s1NetPaunOxPcfqeAWjOWyJF4lY,13962
22
26
  chuk_puzzles_gym/games/einstein/models.py,sha256=DtHJW65mlBgTynUJS0kPnynNJBbgAqPFWNC7jttQoxE,1076
23
27
  chuk_puzzles_gym/games/fillomino/__init__.py,sha256=A_aXhoY8ASfh3C_JGBASMJ6oWo8beN-YWc8gfPl1L9g,153
24
28
  chuk_puzzles_gym/games/fillomino/config.py,sha256=H7-CzBL3b4hYRe0QiOC1_hTXVojbbg-7vvZf5Q7idrQ,927
25
- chuk_puzzles_gym/games/fillomino/game.py,sha256=9s-CriEiYaLdX_hwLXUEpri3ZsK1aTsSRuJR_S2gaPQ,19319
29
+ chuk_puzzles_gym/games/fillomino/game.py,sha256=CPZnzWkm29beSxt4kmRPKImBQDqEDlDsVslYCf3Apys,19379
26
30
  chuk_puzzles_gym/games/futoshiki/__init__.py,sha256=kwgCnU2VGVEUX6oNBUb-k2PJ12EER3Do6az0JJAQVkQ,153
27
31
  chuk_puzzles_gym/games/futoshiki/config.py,sha256=zycoGtrGtXMhcbJkPf5-4WSgAYmCB6xFg5PNe7xjzTM,794
28
- chuk_puzzles_gym/games/futoshiki/game.py,sha256=nEBHySxb6c1e3ecJKEEFEomz2H80F69IYV360nB2rDQ,14076
32
+ chuk_puzzles_gym/games/futoshiki/game.py,sha256=yFSKXGsk8xfsLyzfmnz5UMbIUKqxJcuPJ7dyYWL-6lg,14136
33
+ chuk_puzzles_gym/games/graph_coloring/__init__.py,sha256=iEh_AL8NngVPRGzOwgMAumpp1qU9SWNR7WWjsTGxsnE,248
34
+ chuk_puzzles_gym/games/graph_coloring/commands.py,sha256=2PeTAgZ_3eQ2WTmoYgsDy42JnkZpg6U-wdAvTTjfBDY,3279
35
+ chuk_puzzles_gym/games/graph_coloring/config.py,sha256=i0fGexuy2fT0FN4CZdj6AEZwpXCBjB1OmAOMAqEAtFY,1085
36
+ chuk_puzzles_gym/games/graph_coloring/game.py,sha256=OqE5VyjGqkEjcmJMP9SqrnjAEW0eBar6DFYKo43NP7k,12845
29
37
  chuk_puzzles_gym/games/hidato/__init__.py,sha256=nx9hhBuYUW6k5insmoY8T8ZYCQTNH-74yNmkvuN1Fv8,138
30
38
  chuk_puzzles_gym/games/hidato/config.py,sha256=tk8fwAVQvkVIfrBdschdGcdpvVr8r58zUI3P0UJ0-FA,913
31
- chuk_puzzles_gym/games/hidato/game.py,sha256=lMChcUxRLLkftdngL_1S2KFdYyqaOrJDAYA2cTA--L8,15037
39
+ chuk_puzzles_gym/games/hidato/game.py,sha256=4-oUnC5nOry5UJgsWqj-QTscgTndnm0ZQvokKJqNp_4,15097
32
40
  chuk_puzzles_gym/games/hitori/__init__.py,sha256=mSit-2ejHlBpFDNM7YAduZADBZgP7DTgLwvGUFT0VHs,138
33
41
  chuk_puzzles_gym/games/hitori/config.py,sha256=kcCBBhZr398hRwWU2FINarq2lJ1T2HZ4S-wlcm1X0UE,782
34
- chuk_puzzles_gym/games/hitori/game.py,sha256=MNAbD4moGDwqu1hPAMI3npygR-RH2W7iNcsmrYv-ejE,17265
42
+ chuk_puzzles_gym/games/hitori/game.py,sha256=z3OeEpiJufaZOIzCvKv6uYgSlpCusbhk5f8CEn9tlWM,17325
35
43
  chuk_puzzles_gym/games/kakuro/__init__.py,sha256=rYiQIzs1bSlRGk5DOcXgI_xud3gz_LO7CKekiC39ivM,138
36
44
  chuk_puzzles_gym/games/kakuro/config.py,sha256=QTbt6TOSgFpGfyDulZiTm13u9lzuOwJw_ZTKT5XO_Dw,910
37
- chuk_puzzles_gym/games/kakuro/game.py,sha256=9vAlTkEe6_jeR9m3yB7lEXZtXT3rlxQxaCuoNSzrTgc,14465
45
+ chuk_puzzles_gym/games/kakuro/game.py,sha256=tu4rRx4u4icVXt-FtyJCXY7XTl5SkEYghpslVboNT_A,14525
38
46
  chuk_puzzles_gym/games/kenken/__init__.py,sha256=4V9h7RS2nBr6ZoXD3xselQVcR8NxslzLFYguzJ4JPxw,138
39
47
  chuk_puzzles_gym/games/kenken/config.py,sha256=mcyku9kPnqdXJBR1pW_kLd_0ejeebg44PXGHQb7bsOw,896
40
48
  chuk_puzzles_gym/games/kenken/enums.py,sha256=8LUwUGTZR2MovoLMBrLcVwq3Mx8TVpojyJ9teSp2muk,247
41
- chuk_puzzles_gym/games/kenken/game.py,sha256=hBfWgyMnOD2-95vdsxeonuxipIjRb6uUtqBBrsTEMPc,18613
49
+ chuk_puzzles_gym/games/kenken/game.py,sha256=g11gYbCSBHV-RmXFlLh1FwxsEekG2PEuMdXNRWCRvng,18673
42
50
  chuk_puzzles_gym/games/kenken/models.py,sha256=PsZx9FCWr7B0sgEgiTYMmNSeRp6qriU7ES6i8rjBH5s,526
43
51
  chuk_puzzles_gym/games/killer_sudoku/__init__.py,sha256=t5wYyc4kyPPTlw3EzMVtu4MNF8HtJwt1OmaJqNqTI1w,168
44
52
  chuk_puzzles_gym/games/killer_sudoku/config.py,sha256=PU9vABsdODFnswrlEILykOLUMcvsy4T9JSKd0JxpJJc,833
45
- chuk_puzzles_gym/games/killer_sudoku/game.py,sha256=RrNlAk1EC_mHUt5AggLHCo2rhmaHuzt-YaNo-Mx2Dxs,18837
53
+ chuk_puzzles_gym/games/killer_sudoku/game.py,sha256=uOB7l0Mmt88Q7aBkVaZekNRNJFGi_SDVDYByYoAnl5E,18897
46
54
  chuk_puzzles_gym/games/killer_sudoku/models.py,sha256=HjTdW80adBpl5r_3uaNijrNR9YSwWlBdDrxLihtJJO4,434
47
55
  chuk_puzzles_gym/games/knapsack/__init__.py,sha256=JqpjOUl5w7S_9tNfzP28Qgo5sIqk6JDBFfSUnDi1sew,148
48
56
  chuk_puzzles_gym/games/knapsack/config.py,sha256=yxDnIgkOWuiDjaK__O4N2WHd5BNC8Jh-HFLI6jV7ckE,941
49
57
  chuk_puzzles_gym/games/knapsack/enums.py,sha256=_ByA1xdURmEIp6wlXDn-l2d7ffqYmMMBJdfsFM3vQ6I,171
50
- chuk_puzzles_gym/games/knapsack/game.py,sha256=Kd3aqJlv9iOd_2uDnVu6nPUD9lFGLWntyo89X0S2ZzU,12509
58
+ chuk_puzzles_gym/games/knapsack/game.py,sha256=tT1oY5bAjrk3003XApplGTLb7XIKpcOJHULP8wAVuRI,12569
51
59
  chuk_puzzles_gym/games/knapsack/models.py,sha256=OdtmDHsm-62Ej7HMVLqVfAh_ylsIIQl7Vv0DxmpRUqc,397
52
60
  chuk_puzzles_gym/games/lights_out/__init__.py,sha256=H3Uf6F_nyaJt1h0A6EWDRRWZERTZlqJ8URZAo8wFRXA,153
53
61
  chuk_puzzles_gym/games/lights_out/config.py,sha256=PujrybVGgmuKeY3bgpO7owUGbbHE6KbPqsqweMjiknk,944
54
- chuk_puzzles_gym/games/lights_out/game.py,sha256=b-u4XBYAeyyNINLh47btw3BFYIxi6DzUI8qQ_bu2HmE,8823
62
+ chuk_puzzles_gym/games/lights_out/game.py,sha256=KcvNdB54uDDk2Fq6fal-NExIKN3K9w-9yFFwZfxZXvE,8883
55
63
  chuk_puzzles_gym/games/logic_grid/__init__.py,sha256=ayL8uFmc7s8PCd1qjsQcMX9Y7yVvSBatQTwRjJVAriI,153
56
64
  chuk_puzzles_gym/games/logic_grid/config.py,sha256=OmffFq7Kmpnfi_ltITi-5lsbYz5LTbMWZL0k4VtEIUQ,977
57
65
  chuk_puzzles_gym/games/logic_grid/constants.py,sha256=20C07GHBY2swGDfJBFo3sXQt3Ag8GkH5McqyfniutFU,480
58
- chuk_puzzles_gym/games/logic_grid/game.py,sha256=8th3YWD2Kjbbs7RNKLdlda6bEQNZ8MRo4JBkz41CS48,11983
66
+ chuk_puzzles_gym/games/logic_grid/game.py,sha256=d1j-R1RS_-uX_oJpD3SC_E-U5joFvuretOEBDtcGx_I,12043
59
67
  chuk_puzzles_gym/games/logic_grid/models.py,sha256=lmE7jsP_-7oPzI081NGqm02DCZCQCwRy7T5_ecFHv1k,475
60
68
  chuk_puzzles_gym/games/mastermind/__init__.py,sha256=FIqOTKheJf5yexmMYJ0gU6prflJBqDrPasTAbdvYn9w,158
61
69
  chuk_puzzles_gym/games/mastermind/config.py,sha256=3QDlAbomhHhZAGnkkxknVXPSf1aVJ0b-mm3FycXcuBM,1117
62
- chuk_puzzles_gym/games/mastermind/game.py,sha256=-2ecVtVfXwNH3D-QtdkZP7cbK9IpD2h2mHaZ98mq0nI,10855
70
+ chuk_puzzles_gym/games/mastermind/game.py,sha256=FHs5yIWx6TvAoWpJ6sirwEkhx2rLM7wnRXfjRtLoBzc,10915
63
71
  chuk_puzzles_gym/games/minesweeper/__init__.py,sha256=mDSuSivp2m34GOn9XnchaKtIR_fhOExGhweGQUjhEkk,163
64
72
  chuk_puzzles_gym/games/minesweeper/config.py,sha256=W-K9RkxwlHZf1UUIS5275qaVzsTuRH2SDv3XG7G_HBw,902
65
73
  chuk_puzzles_gym/games/minesweeper/enums.py,sha256=VK6S4PGHXahHGl-ekRmdrhMr_D9L4FfuU-SJFoni-q8,196
66
- chuk_puzzles_gym/games/minesweeper/game.py,sha256=jCUgxT2i2BJE7WpL5hKgL_wme5Rv9vAdYOReWqh5iXY,16436
74
+ chuk_puzzles_gym/games/minesweeper/game.py,sha256=PbWTWpq8eQN8ubPniqB-ciENDo-krzUwQ2awVr7d1RA,16496
67
75
  chuk_puzzles_gym/games/nonogram/__init__.py,sha256=rjtRm0IumZfjTT02mmWWE0mNZ5LvJt7TpPA7drIvJUI,148
68
76
  chuk_puzzles_gym/games/nonogram/config.py,sha256=J0hPA3DqiPZjFg84YM-iqzHBWZDA1DuEqThJHTyoQVE,792
69
- chuk_puzzles_gym/games/nonogram/game.py,sha256=tRjmxnO2vUcS9KHfZ4DrOhYYhq1Wrl3MkQRibg9HL7o,10905
77
+ chuk_puzzles_gym/games/nonogram/game.py,sha256=TRIBT8ajRL2cuOXgi_3nrO29qsi90YkIb05LceQsinY,10965
78
+ chuk_puzzles_gym/games/nqueens/__init__.py,sha256=BEWSaLz2x4Tj_0iXMPM-lgRPQLoaZOi-UKgRmzBO8KA,137
79
+ chuk_puzzles_gym/games/nqueens/config.py,sha256=qb9XeyrswjaJ9Mmfxq1j3IdWOODJGrF0Uz6W5BTM75o,871
80
+ chuk_puzzles_gym/games/nqueens/game.py,sha256=mnwWKRWxiMRKqcpIDtvZRo_fun7RGXhLJuDycfCOaxI,11613
81
+ chuk_puzzles_gym/games/numberlink/__init__.py,sha256=5mm2g8QD2PN8HUIUsJ5-tTBNdLlfQaagjYEjKLGo0UI,158
82
+ chuk_puzzles_gym/games/numberlink/config.py,sha256=E6UsRkUkpR6bMWnQBkt7tYxEb77wBdeutEPSRa6lynw,871
83
+ chuk_puzzles_gym/games/numberlink/game.py,sha256=x8x1PLjJvXsj5kfNhychi2OYCZ7Nquu0BC8vzWk-Pgc,12852
70
84
  chuk_puzzles_gym/games/nurikabe/__init__.py,sha256=maIZE3xItadevCnH_FMJiQr5VHMQrqiaOdnbBs87ndo,148
71
85
  chuk_puzzles_gym/games/nurikabe/config.py,sha256=UpET5L8UGFUuggDqrF6OaxVpGJt5iieVS8N5iBVT62U,914
72
86
  chuk_puzzles_gym/games/nurikabe/enums.py,sha256=NU5WyLK6t0df72zn5RL9T7_XGn8cDh4mHApuVE-V39c,218
73
- chuk_puzzles_gym/games/nurikabe/game.py,sha256=p12mh8pYwUwCiWH0HoDCwtvBaCV8cvKRuEtk2yqcaZc,22741
87
+ chuk_puzzles_gym/games/nurikabe/game.py,sha256=AVNNKJslJrUwdQ3niI4-16bIYoCABbNi4mLXkBlwa8Y,22801
88
+ chuk_puzzles_gym/games/rush_hour/__init__.py,sha256=8JifY9z86sy-BktQlDQKBZQhLCw1ZwrZrpokX2cUTYs,252
89
+ chuk_puzzles_gym/games/rush_hour/commands.py,sha256=_c91Lefd0R4HQskAWfaRe8HfrG5wfExTzPHbdxnspq4,1784
90
+ chuk_puzzles_gym/games/rush_hour/config.py,sha256=HPNebhFSS82l0AYPe-HBtUy0FidpyizbfdTKV68RMGQ,1158
91
+ chuk_puzzles_gym/games/rush_hour/game.py,sha256=me42wLbB_oM6HEFQXDijHvhdIYz3Ib2bWD08Tuyjaik,20046
92
+ chuk_puzzles_gym/games/rush_hour/models.py,sha256=N9-So3PGFSy947LUy_Zf6UUYDsWN8KVYGS8qGJaCjDY,586
74
93
  chuk_puzzles_gym/games/scheduler/__init__.py,sha256=2dsZ3a1QcaGobAOHOtEwGMWGscnYrOtZpod8C_mg2XQ,153
75
94
  chuk_puzzles_gym/games/scheduler/config.py,sha256=mjznF2sKQRqcC8fO3KHbkdi48NMUV_GALmL0XzQ4rCY,1115
76
95
  chuk_puzzles_gym/games/scheduler/constants.py,sha256=KiySqF61dh2mcjiCfsXO5DX8IHmEU9w1xYsO7N5bJiw,242
77
96
  chuk_puzzles_gym/games/scheduler/enums.py,sha256=Npnop_EkNkfB4Q0s5LeF1oIMmIWFp8rBvMzsz31IfW4,174
78
- chuk_puzzles_gym/games/scheduler/game.py,sha256=yCbHn7T5whRRfyKY3PFWgFxxHbts41ihh0JOUMzbf0I,17331
97
+ chuk_puzzles_gym/games/scheduler/game.py,sha256=ykU3uepLUvNXMDarNcgzIwIIlGGk6UeZDacRyjn9jiA,17391
79
98
  chuk_puzzles_gym/games/scheduler/models.py,sha256=qh3IoOuuOoEVTcTP8CWpAdDlyL2HYYAfe-jj7WMqkxQ,520
80
99
  chuk_puzzles_gym/games/shikaku/__init__.py,sha256=-uBxf00nGMRvrF_m3Uk-Izzj24uOO9PaoVa6bInqmGo,143
81
100
  chuk_puzzles_gym/games/shikaku/config.py,sha256=orYfuE5y5iw8vPzgZaR9lofxMsMhLV6skr8nOhY9FSM,907
82
- chuk_puzzles_gym/games/shikaku/game.py,sha256=mujLR1mVaFhGPdpR3iasCz3qb6bkKUqmHME45_EiZOY,15541
101
+ chuk_puzzles_gym/games/shikaku/game.py,sha256=JrpGHRkPMNympVRZhGInVnHGwFkv6bVb6k2uE6rnLeg,15601
102
+ chuk_puzzles_gym/games/skyscrapers/__init__.py,sha256=Y8XEu920EO97WgnRa9mtq_wtc8BFeG6jCBLowO5F2xY,156
103
+ chuk_puzzles_gym/games/skyscrapers/config.py,sha256=K7LnI4Akz9QrfISIksOpbdMph0YAsbZO41AAG78ddoE,746
104
+ chuk_puzzles_gym/games/skyscrapers/game.py,sha256=kkW_q9N9CMnClvkzxxbtyBbSKEHmXq3sD-OqwfQYNNU,10510
83
105
  chuk_puzzles_gym/games/slitherlink/__init__.py,sha256=9KZSUINa7tJ6P1DF_Jb3qvGkYqZARPWYnZ3bZVGUVhE,163
84
106
  chuk_puzzles_gym/games/slitherlink/config.py,sha256=BunuL_XA5yOPI5AqMmOCF3iFcCgY8rLtokrye6wCNiA,804
85
- chuk_puzzles_gym/games/slitherlink/game.py,sha256=IDpvj8ynaQOCJJgFUeERY8NhKGiG0c4myfHTf0TGnv0,14580
107
+ chuk_puzzles_gym/games/slitherlink/game.py,sha256=woj_mC3niE70SfEaVpb8784jW_kFuSjqfKaD5Ibu2Cs,14640
86
108
  chuk_puzzles_gym/games/sokoban/__init__.py,sha256=F3gxLt0QeDqN3oku6Kg-FDAck5HjKlFXCgf_ZkuFsTc,143
87
109
  chuk_puzzles_gym/games/sokoban/config.py,sha256=An9LxYnPyx1r3orP3Cas-PFZYthbMnCvYJPNz4DEFXE,914
88
- chuk_puzzles_gym/games/sokoban/game.py,sha256=zWv3kSxEWq1W74VNkQEw_S73Y9Hr3_Ujj68Aan7mfUo,25567
110
+ chuk_puzzles_gym/games/sokoban/game.py,sha256=W58VxnJC_jy1jPmUCB5VLsT5Gj5xc70DK9_AjO5pnwo,25627
89
111
  chuk_puzzles_gym/games/star_battle/__init__.py,sha256=qsE4q6Awa9Ywj3oyDrruA5E-NOLEblKZEgrnrMB9Das,158
90
112
  chuk_puzzles_gym/games/star_battle/config.py,sha256=MUwFsoeIT9S7FwDGUSZ--3QePpoXSWRpDaLb7X0zcgs,958
91
- chuk_puzzles_gym/games/star_battle/game.py,sha256=D79GMWtvk08lrIioquTefRg2jii1IN933e7UvXRtRhM,14492
113
+ chuk_puzzles_gym/games/star_battle/game.py,sha256=f0c9gtvakhA7T0XPnoQS3TztI3DLOo0epoG83N2B-uM,14552
92
114
  chuk_puzzles_gym/games/sudoku/__init__.py,sha256=Q14HabjmkQc3QzqtA66WrAcHSoqLyv6A36_-KG8j-J4,205
93
115
  chuk_puzzles_gym/games/sudoku/commands.py,sha256=PbU0-7pkelP0sulyh8zudU47jVhpWhiUP0d0TOOmC0o,3004
94
116
  chuk_puzzles_gym/games/sudoku/config.py,sha256=pgr82NHcxvUAVZnAlsxeA7Iq3HrkhR1xAe_OGBOwAp8,779
95
- chuk_puzzles_gym/games/sudoku/game.py,sha256=CfBtSES1M8rrGGy8vB4HvmVbYerWA7n0FjQZuM7iPxI,11657
117
+ chuk_puzzles_gym/games/sudoku/game.py,sha256=35vB5x-KIs5z2b-CDV-dq5kifmVkoEkbLOx01xiCgKw,11717
96
118
  chuk_puzzles_gym/games/tents/__init__.py,sha256=iVxsZg7Juz3iHXTK8mfJZniFcMNnmAd2h2RjxR2TH40,133
97
119
  chuk_puzzles_gym/games/tents/config.py,sha256=gSi5epG5va8-a4ZQv5ekcFDkWQSYOSheX2j4FIs_I8Q,914
98
- chuk_puzzles_gym/games/tents/game.py,sha256=xU-WOjegPqTCq1X2oQ0k4VsGK4m4IS93KEdBaXIhv0k,15742
120
+ chuk_puzzles_gym/games/tents/game.py,sha256=JGPLYvIosCwjJYhi0FCtA3YUFsgQsD9L_BEArHSOPFM,15802
99
121
  chuk_puzzles_gym/models/__init__.py,sha256=dZzLWsyKE993o8HFfFkxTR7XjDwYK56rB-5clwW4zPg,930
100
122
  chuk_puzzles_gym/models/base.py,sha256=L7Zug9jUXJCOhD3wKJp0ppJZNTgroDQwdYMjvAaVVqc,1156
101
123
  chuk_puzzles_gym/models/config.py,sha256=12UkPlEEFzN1k9ZfJClpVqkp7E11MWriZVAH2RkfEM4,301
@@ -103,10 +125,10 @@ chuk_puzzles_gym/models/enums.py,sha256=xmHv0OK2zKcxpfhJP3huuXhDnnX0BDLCwWfpR9Zu
103
125
  chuk_puzzles_gym/models/evaluation.py,sha256=EwFeecWtQ-wyezPE1dhpKDUH-BTdF7cDJ_W99JLoMUM,16070
104
126
  chuk_puzzles_gym/models/games.py,sha256=rnEW_Sl9xuZtvlBXBZfab34HrIhtUEiBdUSs_nvh10o,442
105
127
  chuk_puzzles_gym/trace/__init__.py,sha256=8JHaHxbTDhT9kv4e2e5Px4dCWuXY49OXmvzkMS4nKfw,273
106
- chuk_puzzles_gym/trace/generator.py,sha256=4UzZglzhDtOchcC16j3p-4kJtJhVWDGtrzw_X785tp8,30613
128
+ chuk_puzzles_gym/trace/generator.py,sha256=4pks0d_asoDE15QjM2VuzgFWTV1fZke_gHH2lVF8KVQ,34058
107
129
  chuk_puzzles_gym/utils/__init__.py,sha256=1AKPfRjT9YlBxxcA7qdKcvKBXdHJzfGtUWansrb_2VE,149
108
- chuk_puzzles_gym-0.9.dist-info/METADATA,sha256=RYU5usTw8QWCVYeAI92w-jIcduLoxcwGKQ6CcnlpF3s,47252
109
- chuk_puzzles_gym-0.9.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
110
- chuk_puzzles_gym-0.9.dist-info/entry_points.txt,sha256=tJGHiH8wjkBev2SPNuXOLFkaXE76sW9ZFIMQw4pUj5E,181
111
- chuk_puzzles_gym-0.9.dist-info/top_level.txt,sha256=H3z9wKGl7CV1BPlO6t5lEtok6WW9rwGr5C1Dr3Kqx28,17
112
- chuk_puzzles_gym-0.9.dist-info/RECORD,,
130
+ chuk_puzzles_gym-0.10.1.dist-info/METADATA,sha256=HD-oYiDi5OTNMOjtvxQkB9aBuOBUARAy1RcXcjf4T2I,49935
131
+ chuk_puzzles_gym-0.10.1.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
132
+ chuk_puzzles_gym-0.10.1.dist-info/entry_points.txt,sha256=tJGHiH8wjkBev2SPNuXOLFkaXE76sW9ZFIMQw4pUj5E,181
133
+ chuk_puzzles_gym-0.10.1.dist-info/top_level.txt,sha256=H3z9wKGl7CV1BPlO6t5lEtok6WW9rwGr5C1Dr3Kqx28,17
134
+ chuk_puzzles_gym-0.10.1.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (80.9.0)
2
+ Generator: setuptools (80.10.2)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5