sudoku-smt-solvers 0.1.0__tar.gz → 0.2.0__tar.gz

Sign up to get free protection for your applications and to get access to all the features.
Files changed (32) hide show
  1. {sudoku_smt_solvers-0.1.0/sudoku_smt_solvers.egg-info → sudoku_smt_solvers-0.2.0}/PKG-INFO +18 -8
  2. {sudoku_smt_solvers-0.1.0 → sudoku_smt_solvers-0.2.0}/README.md +2 -2
  3. {sudoku_smt_solvers-0.1.0 → sudoku_smt_solvers-0.2.0}/setup.py +4 -4
  4. sudoku_smt_solvers-0.2.0/sudoku_smt_solvers/__init__.py +19 -0
  5. {sudoku_smt_solvers-0.1.0 → sudoku_smt_solvers-0.2.0}/sudoku_smt_solvers/solvers/cvc5_solver.py +1 -1
  6. {sudoku_smt_solvers-0.1.0 → sudoku_smt_solvers-0.2.0}/sudoku_smt_solvers/solvers/dpll_solver.py +1 -1
  7. {sudoku_smt_solvers-0.1.0 → sudoku_smt_solvers-0.2.0}/sudoku_smt_solvers/solvers/dpllt_solver.py +1 -1
  8. {sudoku_smt_solvers-0.1.0 → sudoku_smt_solvers-0.2.0}/sudoku_smt_solvers/solvers/z3_solver.py +1 -1
  9. {sudoku_smt_solvers-0.1.0 → sudoku_smt_solvers-0.2.0/sudoku_smt_solvers.egg-info}/PKG-INFO +18 -8
  10. {sudoku_smt_solvers-0.1.0 → sudoku_smt_solvers-0.2.0}/sudoku_smt_solvers.egg-info/SOURCES.txt +0 -1
  11. {sudoku_smt_solvers-0.1.0 → sudoku_smt_solvers-0.2.0}/sudoku_smt_solvers.egg-info/requires.txt +1 -1
  12. {sudoku_smt_solvers-0.1.0 → sudoku_smt_solvers-0.2.0}/tests/test_cvc5_solver.py +1 -1
  13. {sudoku_smt_solvers-0.1.0 → sudoku_smt_solvers-0.2.0}/tests/test_dpll_solver.py +1 -1
  14. {sudoku_smt_solvers-0.1.0 → sudoku_smt_solvers-0.2.0}/tests/test_dpllt_solver.py +1 -1
  15. {sudoku_smt_solvers-0.1.0 → sudoku_smt_solvers-0.2.0}/tests/test_z3_solver.py +1 -1
  16. sudoku_smt_solvers-0.1.0/sudoku_smt_solvers/__init__.py +0 -4
  17. sudoku_smt_solvers-0.1.0/sudoku_smt_solvers/solvers/sudoku_error.py +0 -8
  18. {sudoku_smt_solvers-0.1.0 → sudoku_smt_solvers-0.2.0}/LICENSE +0 -0
  19. {sudoku_smt_solvers-0.1.0 → sudoku_smt_solvers-0.2.0}/pyproject.toml +0 -0
  20. {sudoku_smt_solvers-0.1.0 → sudoku_smt_solvers-0.2.0}/setup.cfg +0 -0
  21. {sudoku_smt_solvers-0.1.0 → sudoku_smt_solvers-0.2.0}/sudoku_smt_solvers/benchmarks/__init__.py +0 -0
  22. {sudoku_smt_solvers-0.1.0 → sudoku_smt_solvers-0.2.0}/sudoku_smt_solvers/benchmarks/benchmark_runner.py +0 -0
  23. {sudoku_smt_solvers-0.1.0 → sudoku_smt_solvers-0.2.0}/sudoku_smt_solvers/solvers/__init__.py +0 -0
  24. {sudoku_smt_solvers-0.1.0 → sudoku_smt_solvers-0.2.0}/sudoku_smt_solvers.egg-info/dependency_links.txt +0 -0
  25. {sudoku_smt_solvers-0.1.0 → sudoku_smt_solvers-0.2.0}/sudoku_smt_solvers.egg-info/top_level.txt +0 -0
  26. {sudoku_smt_solvers-0.1.0 → sudoku_smt_solvers-0.2.0}/tests/test_benchmark_runner.py +0 -0
  27. {sudoku_smt_solvers-0.1.0 → sudoku_smt_solvers-0.2.0}/tests/test_dfs_solver.py +0 -0
  28. {sudoku_smt_solvers-0.1.0 → sudoku_smt_solvers-0.2.0}/tests/test_hole_digger.py +0 -0
  29. {sudoku_smt_solvers-0.1.0 → sudoku_smt_solvers-0.2.0}/tests/test_las_vegas.py +0 -0
  30. {sudoku_smt_solvers-0.1.0 → sudoku_smt_solvers-0.2.0}/tests/test_parser.py +0 -0
  31. {sudoku_smt_solvers-0.1.0 → sudoku_smt_solvers-0.2.0}/tests/test_profiler.py +0 -0
  32. {sudoku_smt_solvers-0.1.0 → sudoku_smt_solvers-0.2.0}/tests/test_sudoku_generator.py +0 -0
@@ -1,31 +1,41 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.2
2
2
  Name: sudoku_smt_solvers
3
- Version: 0.1.0
3
+ Version: 0.2.0
4
4
  Summary: A collection of SAT and SMT solvers for solving Sudoku puzzles
5
5
  Home-page: https://liamjdavis.github.io/sudoku-smt-solvers
6
- Author: Liam Davis
7
- Author-email: ljdavis27@amherst.edu
6
+ Author: Liam Davis, Tairan 'Ryan' Ji
7
+ Author-email: ljdavis27@amherst.edu, tji26@amherst.edu
8
8
  License: MIT
9
9
  Classifier: Programming Language :: Python :: 3
10
10
  Classifier: License :: OSI Approved :: MIT License
11
11
  Classifier: Operating System :: OS Independent
12
- Requires-Python: >=3.9
12
+ Requires-Python: >=3.10
13
13
  Description-Content-Type: text/markdown
14
14
  License-File: LICENSE
15
15
  Requires-Dist: cvc5
16
- Requires-Dist: pysat
16
+ Requires-Dist: python-sat
17
17
  Requires-Dist: z3-solver
18
+ Dynamic: author
19
+ Dynamic: author-email
20
+ Dynamic: classifier
21
+ Dynamic: description
22
+ Dynamic: description-content-type
23
+ Dynamic: home-page
24
+ Dynamic: license
25
+ Dynamic: requires-dist
26
+ Dynamic: requires-python
27
+ Dynamic: summary
18
28
 
19
29
  # Sudoku-SMT-Solvers
20
30
 
21
31
  [![Pytest + CI/CD](https://github.com/liamjdavis/Sudoku-SMT-Solvers/actions/workflows/test.yml/badge.svg)](ttps://github.com/liamjdavis/Sudoku-SMT-Solvers/actions/workflows/test.yml)
22
32
  [![Coverage Status](https://coveralls.io/repos/github/liamjdavis/Sudoku-SMT-Solvers/badge.svg)](https://coveralls.io/github/liamjdavis/Sudoku-SMT-Solvers)
23
33
  [![Docs Build Deployment](https://github.com/liamjdavis/Sudoku-SMT-Solvers/actions/workflows/docs.yml/badge.svg)](https://github.com/liamjdavis/Sudoku-SMT-Solvers/actions/workflows/docs.yml)
24
- [![Documentation](https://img.shields.io/badge/docs-latest-blue.svg)](https://liamjdavis.github.io/sudoku-smt-solvers)
34
+ [![Documentation](https://img.shields.io/badge/docs-latest-blue.svg)](https://liamjdavis.github.io/Sudoku-SMT-Solvers)
25
35
 
26
36
 
27
37
  ## About
28
- This repository contains the code for the study "Evaluating SMT-Based Solvers on Sudoku". Created by Liam Davis (@liamjdavis) and Ryan Ji (@TairanJ) as their for COSC-241 Artificial Intelligence at Amherst College, it evaluates the efficacy of SMT-Based Solvers by benchmarking three modern SMT solvers (DPLL(T), Z3, and CVC5) against the DPLL algorithm on a collection of 100 25x25 Sudoku puzzles of varying difficulty.
38
+ This repository contains the code for the study "Evaluating SMT-Based Solvers on Sudoku". Created by Liam Davis (@liamjdavis) and Tairan "Ryan" Ji (@TairanJ) as their for COSC-241 Artificial Intelligence at Amherst College, it evaluates the efficacy of SMT-Based Solvers by benchmarking three modern SMT solvers (DPLL(T), Z3, and CVC5) against the DPLL algorithm on a collection of 100 25x25 Sudoku puzzles of varying difficulty.
29
39
 
30
40
  Along with the study, we also published `sudoku-smt-solvers`, a Python package that provides the various SMT-based Sudoku solvers and benchmarking tools we built for this study. The package features DPLL(T), Z3, and CVC5 solvers optimized for 25x25 Sudoku puzzles, a puzzle generator for creating test cases, and a comprehensive benchmarking suite. Available through pip, it offers a simple API for solving Sudoku puzzles using state-of-the-art SMT solvers while facilitating performance comparisons between different solving approaches.
31
41
 
@@ -3,11 +3,11 @@
3
3
  [![Pytest + CI/CD](https://github.com/liamjdavis/Sudoku-SMT-Solvers/actions/workflows/test.yml/badge.svg)](ttps://github.com/liamjdavis/Sudoku-SMT-Solvers/actions/workflows/test.yml)
4
4
  [![Coverage Status](https://coveralls.io/repos/github/liamjdavis/Sudoku-SMT-Solvers/badge.svg)](https://coveralls.io/github/liamjdavis/Sudoku-SMT-Solvers)
5
5
  [![Docs Build Deployment](https://github.com/liamjdavis/Sudoku-SMT-Solvers/actions/workflows/docs.yml/badge.svg)](https://github.com/liamjdavis/Sudoku-SMT-Solvers/actions/workflows/docs.yml)
6
- [![Documentation](https://img.shields.io/badge/docs-latest-blue.svg)](https://liamjdavis.github.io/sudoku-smt-solvers)
6
+ [![Documentation](https://img.shields.io/badge/docs-latest-blue.svg)](https://liamjdavis.github.io/Sudoku-SMT-Solvers)
7
7
 
8
8
 
9
9
  ## About
10
- This repository contains the code for the study "Evaluating SMT-Based Solvers on Sudoku". Created by Liam Davis (@liamjdavis) and Ryan Ji (@TairanJ) as their for COSC-241 Artificial Intelligence at Amherst College, it evaluates the efficacy of SMT-Based Solvers by benchmarking three modern SMT solvers (DPLL(T), Z3, and CVC5) against the DPLL algorithm on a collection of 100 25x25 Sudoku puzzles of varying difficulty.
10
+ This repository contains the code for the study "Evaluating SMT-Based Solvers on Sudoku". Created by Liam Davis (@liamjdavis) and Tairan "Ryan" Ji (@TairanJ) as their for COSC-241 Artificial Intelligence at Amherst College, it evaluates the efficacy of SMT-Based Solvers by benchmarking three modern SMT solvers (DPLL(T), Z3, and CVC5) against the DPLL algorithm on a collection of 100 25x25 Sudoku puzzles of varying difficulty.
11
11
 
12
12
  Along with the study, we also published `sudoku-smt-solvers`, a Python package that provides the various SMT-based Sudoku solvers and benchmarking tools we built for this study. The package features DPLL(T), Z3, and CVC5 solvers optimized for 25x25 Sudoku puzzles, a puzzle generator for creating test cases, and a comprehensive benchmarking suite. Available through pip, it offers a simple API for solving Sudoku puzzles using state-of-the-art SMT solvers while facilitating performance comparisons between different solving approaches.
13
13
 
@@ -3,8 +3,8 @@ import setuptools
3
3
  import re
4
4
 
5
5
  NAME = "sudoku_smt_solvers"
6
- AUTHOR = "Liam Davis"
7
- AUTHOR_EMAIL = "ljdavis27@amherst.edu"
6
+ AUTHOR = "Liam Davis, Tairan 'Ryan' Ji"
7
+ AUTHOR_EMAIL = "ljdavis27@amherst.edu, tji26@amherst.edu"
8
8
  DESCRIPTION = "A collection of SAT and SMT solvers for solving Sudoku puzzles"
9
9
  LICENSE = "MIT"
10
10
  URL = "https://liamjdavis.github.io/sudoku-smt-solvers"
@@ -16,7 +16,7 @@ CLASSIFIERS = [
16
16
  ]
17
17
  INSTALL_REQUIRES = [
18
18
  "cvc5",
19
- "pysat",
19
+ "python-sat",
20
20
  "z3-solver",
21
21
  ]
22
22
  ENTRY_POINTS = {}
@@ -53,5 +53,5 @@ if __name__ == "__main__":
53
53
  entry_points=ENTRY_POINTS,
54
54
  scripts=SCRIPTS,
55
55
  include_package_data=True,
56
- python_requires=">=3.9",
56
+ python_requires=">=3.10",
57
57
  )
@@ -0,0 +1,19 @@
1
+ """Sudoku SMT Solvers - A package for solving and benchmarking large-scale Sudoku puzzles.
2
+
3
+ This package provides various SAT and SMT-based solvers optimized for 25x25 Sudoku puzzles,
4
+ along with tools for puzzle generation and solver benchmarking.
5
+
6
+ Key Components:
7
+ - Multiple solver implementations (DPLL, DPLL(T), Z3, CVC5)
8
+ - Sudoku puzzle generator with difficulty settings
9
+ - Benchmarking suite for comparing solver performance
10
+ """
11
+
12
+ from .solvers.dpll_solver import DPLLSolver
13
+ from .solvers.dpllt_solver import DPLLTSolver
14
+ from .solvers.z3_solver import Z3Solver
15
+ from .solvers.cvc5_solver import CVC5Solver
16
+ from .benchmarks.benchmark_runner import BenchmarkRunner
17
+ from .benchmarks.sudoku_generator.sudoku_generator import SudokuGenerator
18
+
19
+ __version__ = "0.2.0"
@@ -1,7 +1,7 @@
1
1
  from typing import List, Optional
2
2
  import atexit
3
3
  from cvc5 import Kind, Solver
4
- from .sudoku_error import SudokuError
4
+ from .utils.sudoku_error import SudokuError
5
5
 
6
6
 
7
7
  class CVC5Solver:
@@ -1,7 +1,7 @@
1
1
  from typing import List, Optional
2
2
  from pysat.solvers import Solver
3
3
  from pysat.formula import CNF
4
- from .sudoku_error import SudokuError
4
+ from .utils.sudoku_error import SudokuError
5
5
 
6
6
 
7
7
  class DPLLSolver:
@@ -1,7 +1,7 @@
1
1
  from typing import List, Optional
2
2
  from pysat.solvers import Solver
3
3
  from pysat.formula import CNF
4
- from .sudoku_error import SudokuError
4
+ from .utils.sudoku_error import SudokuError
5
5
 
6
6
 
7
7
  class DPLLTSolver:
@@ -1,5 +1,5 @@
1
1
  from z3 import Solver, Int, Distinct, sat
2
- from sudoku_smt_solvers.solvers.sudoku_error import SudokuError
2
+ from .utils.sudoku_error import SudokuError
3
3
 
4
4
 
5
5
  class Z3Solver:
@@ -1,31 +1,41 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.2
2
2
  Name: sudoku_smt_solvers
3
- Version: 0.1.0
3
+ Version: 0.2.0
4
4
  Summary: A collection of SAT and SMT solvers for solving Sudoku puzzles
5
5
  Home-page: https://liamjdavis.github.io/sudoku-smt-solvers
6
- Author: Liam Davis
7
- Author-email: ljdavis27@amherst.edu
6
+ Author: Liam Davis, Tairan 'Ryan' Ji
7
+ Author-email: ljdavis27@amherst.edu, tji26@amherst.edu
8
8
  License: MIT
9
9
  Classifier: Programming Language :: Python :: 3
10
10
  Classifier: License :: OSI Approved :: MIT License
11
11
  Classifier: Operating System :: OS Independent
12
- Requires-Python: >=3.9
12
+ Requires-Python: >=3.10
13
13
  Description-Content-Type: text/markdown
14
14
  License-File: LICENSE
15
15
  Requires-Dist: cvc5
16
- Requires-Dist: pysat
16
+ Requires-Dist: python-sat
17
17
  Requires-Dist: z3-solver
18
+ Dynamic: author
19
+ Dynamic: author-email
20
+ Dynamic: classifier
21
+ Dynamic: description
22
+ Dynamic: description-content-type
23
+ Dynamic: home-page
24
+ Dynamic: license
25
+ Dynamic: requires-dist
26
+ Dynamic: requires-python
27
+ Dynamic: summary
18
28
 
19
29
  # Sudoku-SMT-Solvers
20
30
 
21
31
  [![Pytest + CI/CD](https://github.com/liamjdavis/Sudoku-SMT-Solvers/actions/workflows/test.yml/badge.svg)](ttps://github.com/liamjdavis/Sudoku-SMT-Solvers/actions/workflows/test.yml)
22
32
  [![Coverage Status](https://coveralls.io/repos/github/liamjdavis/Sudoku-SMT-Solvers/badge.svg)](https://coveralls.io/github/liamjdavis/Sudoku-SMT-Solvers)
23
33
  [![Docs Build Deployment](https://github.com/liamjdavis/Sudoku-SMT-Solvers/actions/workflows/docs.yml/badge.svg)](https://github.com/liamjdavis/Sudoku-SMT-Solvers/actions/workflows/docs.yml)
24
- [![Documentation](https://img.shields.io/badge/docs-latest-blue.svg)](https://liamjdavis.github.io/sudoku-smt-solvers)
34
+ [![Documentation](https://img.shields.io/badge/docs-latest-blue.svg)](https://liamjdavis.github.io/Sudoku-SMT-Solvers)
25
35
 
26
36
 
27
37
  ## About
28
- This repository contains the code for the study "Evaluating SMT-Based Solvers on Sudoku". Created by Liam Davis (@liamjdavis) and Ryan Ji (@TairanJ) as their for COSC-241 Artificial Intelligence at Amherst College, it evaluates the efficacy of SMT-Based Solvers by benchmarking three modern SMT solvers (DPLL(T), Z3, and CVC5) against the DPLL algorithm on a collection of 100 25x25 Sudoku puzzles of varying difficulty.
38
+ This repository contains the code for the study "Evaluating SMT-Based Solvers on Sudoku". Created by Liam Davis (@liamjdavis) and Tairan "Ryan" Ji (@TairanJ) as their for COSC-241 Artificial Intelligence at Amherst College, it evaluates the efficacy of SMT-Based Solvers by benchmarking three modern SMT solvers (DPLL(T), Z3, and CVC5) against the DPLL algorithm on a collection of 100 25x25 Sudoku puzzles of varying difficulty.
29
39
 
30
40
  Along with the study, we also published `sudoku-smt-solvers`, a Python package that provides the various SMT-based Sudoku solvers and benchmarking tools we built for this study. The package features DPLL(T), Z3, and CVC5 solvers optimized for 25x25 Sudoku puzzles, a puzzle generator for creating test cases, and a comprehensive benchmarking suite. Available through pip, it offers a simple API for solving Sudoku puzzles using state-of-the-art SMT solvers while facilitating performance comparisons between different solving approaches.
31
41
 
@@ -14,7 +14,6 @@ sudoku_smt_solvers/solvers/__init__.py
14
14
  sudoku_smt_solvers/solvers/cvc5_solver.py
15
15
  sudoku_smt_solvers/solvers/dpll_solver.py
16
16
  sudoku_smt_solvers/solvers/dpllt_solver.py
17
- sudoku_smt_solvers/solvers/sudoku_error.py
18
17
  sudoku_smt_solvers/solvers/z3_solver.py
19
18
  tests/test_benchmark_runner.py
20
19
  tests/test_cvc5_solver.py
@@ -1,3 +1,3 @@
1
1
  cvc5
2
- pysat
2
+ python-sat
3
3
  z3-solver
@@ -2,7 +2,7 @@ import pytest
2
2
  import os
3
3
  import json
4
4
  from sudoku_smt_solvers.solvers.cvc5_solver import CVC5Solver
5
- from sudoku_smt_solvers.solvers.sudoku_error import SudokuError
5
+ from sudoku_smt_solvers.solvers.utils.sudoku_error import SudokuError
6
6
 
7
7
 
8
8
  @pytest.fixture
@@ -2,7 +2,7 @@ import pytest
2
2
  import json
3
3
  import os
4
4
  from sudoku_smt_solvers.solvers.dpll_solver import DPLLSolver
5
- from sudoku_smt_solvers.solvers.sudoku_error import SudokuError
5
+ from sudoku_smt_solvers.solvers.utils.sudoku_error import SudokuError
6
6
 
7
7
 
8
8
  @pytest.fixture
@@ -2,7 +2,7 @@ import pytest
2
2
  import json
3
3
  import os
4
4
  from sudoku_smt_solvers.solvers.dpllt_solver import DPLLTSolver
5
- from sudoku_smt_solvers.solvers.sudoku_error import SudokuError
5
+ from sudoku_smt_solvers.solvers.utils.sudoku_error import SudokuError
6
6
 
7
7
 
8
8
  @pytest.fixture
@@ -2,7 +2,7 @@ import pytest
2
2
  import json
3
3
  import os
4
4
  from sudoku_smt_solvers.solvers.z3_solver import Z3Solver
5
- from sudoku_smt_solvers.solvers.sudoku_error import SudokuError
5
+ from sudoku_smt_solvers.solvers.utils.sudoku_error import SudokuError
6
6
 
7
7
 
8
8
  @pytest.fixture
@@ -1,4 +0,0 @@
1
- from .benchmarks import BenchmarkRunner, SudokuGenerator
2
- from .solvers import CVC5Solver, DPLLSolver, Z3Solver
3
-
4
- __version__ = "0.1.0"
@@ -1,8 +0,0 @@
1
- class SudokuError(Exception):
2
- """An exception class for errors in the sudoku solver"""
3
-
4
- def __init__(self, message):
5
- self.message = message
6
-
7
- def __str__(self):
8
- return self.message