Skip to main content

Exact cover solver in Python

Project description

exact cover in Python

an implementation of Donald Knuth's Dancing Links algorithm in pure Python

Usage

pip install exact_cover_py
from exact_cover_py import exact_covers

problem = np.array([
        [1, 0, 0, 1, 0, 0, 1],
        [1, 0, 0, 1, 0, 0, 0],  # <--
        [0, 0, 0, 1, 1, 0, 1],
        [0, 0, 1, 0, 1, 1, 0],  # <--
        [0, 1, 1, 0, 0, 0, 1],
        [0, 1, 1, 0, 0, 1, 1],  # <--
        [0, 1, 0, 0, 0, 0, 1],
   ])

# exact_covers returns a generator of solutions

# one solution
print(next(exact_covers(problem)))
[1, 5, 3]

# all solutions
print(list(exact_covers(problem)))
[[1, 5, 3]]

# number of solutions
def mylen(iterable):
    return sum(map(lambda x: 1, iterable))

print(mylen(exact_covers(problem)))
2

Development

# build and install locally with tests dependencies
pip install -e .[tests]

pytest

Building and publishing

# deps
pip install build hatchling twine

# build
python -m build

# publish
twine upload dist/*

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

exact_cover_py-0.1.1.tar.gz (60.6 kB view details)

Uploaded Source

Built Distribution

exact_cover_py-0.1.1-py3-none-any.whl (57.5 kB view details)

Uploaded Python 3

File details

Details for the file exact_cover_py-0.1.1.tar.gz.

File metadata

  • Download URL: exact_cover_py-0.1.1.tar.gz
  • Upload date:
  • Size: 60.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.12.1

File hashes

Hashes for exact_cover_py-0.1.1.tar.gz
Algorithm Hash digest
SHA256 a1a16a34745d664c34014bddae4ce78d6e69e81f90c1212db72de367c6e2e412
MD5 24243e05c52488ddda5f6ea824f2a756
BLAKE2b-256 e9436a072b0ac3524c8bb8eb1d75a14867760e48e4da147bf464c923154d3195

See more details on using hashes here.

File details

Details for the file exact_cover_py-0.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for exact_cover_py-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 f8b665c88d0b0ff4d0df2c850f282e041bd1dd2518299e1526b8dc7da3c3aace
MD5 9964a00898604cbf09281fef6054e983
BLAKE2b-256 d4a58244056409db4b303213ebed1d6b745ea1981f06584f68778844f66d514b

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page