Skip to main content

A Python module for finding all solutions to the SUBSET-SUM problem

Project description

subsetsum

The subsetsum Python module can enumerate all combinations within a list of integers which sums to a specific value. It works for both negative and positive target sum values, as well as negative, positive, and repeating values in the list of input numbers. subsetsum can also quickly answer whether or not there exists a subset of integers in the input list which sums to target.

Installation

pip install subsetsum

Example usage

import subsetsum

target = 0
nums = [-2, -1, 0, 1, 2]

has_solution = subsetsum.has_solution(nums, target)
print(f"Can {nums} sum to {target}? {has_solution}")

for solution in subsetsum.solutions(nums, target):
    # `solution` contains indices of elements in `nums`
    subset = [nums[i] for i in solution]
    sum_value = sum(subset)
    print(f"{subset} sums to {sum_value}")

API

import subsetsum


subsetsum.has_solution(nums: List[int], target: int) -> bool:
    Determines if there is a subset of `nums` which sums to
        `target`. If `nums` is empty, the result is always False.

    Args:
        nums (List[int]): A list of integers (positive or negative)
            for the SUBSET-SUM problem
        target (int): The target value (positive or negative) which
            will be used in the SUBSET-SUM problem

    Returns:
        bool: True if there exists a subset of `nums` which sums to
            `target`, otherwise false


subsetsum.solutions(nums: List[int], target: int) -> Iterator[List[int]]:
    Enumerates all solutions to SUBSET-SUM. If `nums` is empty,
    no solutions will be generated.

    Args:
        nums (List[int]): A list of integers (positive or negative)
            from which subsets will be generated
        target (int): The target value (positive or negative) for the
            sum of each subset

    Returns:
        Iterable: An iterator over the set of solutions, where each
            solution is a list of integers that index into the original
            list `nums` to form a subset

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

subsetsum-0.0.2.tar.gz (14.3 kB view hashes)

Uploaded Source

Built Distributions

subsetsum-0.0.2-pp38-pypy38_pp73-win_amd64.whl (143.4 kB view hashes)

Uploaded PyPy Windows x86-64

subsetsum-0.0.2-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (218.3 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

subsetsum-0.0.2-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl (231.8 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ i686

subsetsum-0.0.2-pp38-pypy38_pp73-macosx_10_9_x86_64.whl (147.0 kB view hashes)

Uploaded PyPy macOS 10.9+ x86-64

subsetsum-0.0.2-pp37-pypy37_pp73-win_amd64.whl (144.0 kB view hashes)

Uploaded PyPy Windows x86-64

subsetsum-0.0.2-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (219.7 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

subsetsum-0.0.2-pp37-pypy37_pp73-manylinux_2_17_i686.manylinux2014_i686.whl (233.8 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ i686

subsetsum-0.0.2-pp37-pypy37_pp73-macosx_10_9_x86_64.whl (80.6 kB view hashes)

Uploaded PyPy macOS 10.9+ x86-64

subsetsum-0.0.2-cp310-cp310-win_amd64.whl (79.4 kB view hashes)

Uploaded CPython 3.10 Windows x86-64

subsetsum-0.0.2-cp310-cp310-win32.whl (71.7 kB view hashes)

Uploaded CPython 3.10 Windows x86

subsetsum-0.0.2-cp310-cp310-musllinux_1_1_x86_64.whl (635.3 kB view hashes)

Uploaded CPython 3.10 musllinux: musl 1.1+ x86-64

subsetsum-0.0.2-cp310-cp310-musllinux_1_1_i686.whl (693.1 kB view hashes)

Uploaded CPython 3.10 musllinux: musl 1.1+ i686

subsetsum-0.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (118.7 kB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

subsetsum-0.0.2-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl (125.5 kB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ i686

subsetsum-0.0.2-cp310-cp310-macosx_10_9_x86_64.whl (80.6 kB view hashes)

Uploaded CPython 3.10 macOS 10.9+ x86-64

subsetsum-0.0.2-cp310-cp310-macosx_10_9_universal2.whl (144.5 kB view hashes)

Uploaded CPython 3.10 macOS 10.9+ universal2 (ARM64, x86-64)

subsetsum-0.0.2-cp39-cp39-win_amd64.whl (78.9 kB view hashes)

Uploaded CPython 3.9 Windows x86-64

subsetsum-0.0.2-cp39-cp39-win32.whl (71.8 kB view hashes)

Uploaded CPython 3.9 Windows x86

subsetsum-0.0.2-cp39-cp39-musllinux_1_1_x86_64.whl (635.4 kB view hashes)

Uploaded CPython 3.9 musllinux: musl 1.1+ x86-64

subsetsum-0.0.2-cp39-cp39-musllinux_1_1_i686.whl (693.3 kB view hashes)

Uploaded CPython 3.9 musllinux: musl 1.1+ i686

subsetsum-0.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (119.0 kB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

subsetsum-0.0.2-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl (125.7 kB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ i686

subsetsum-0.0.2-cp39-cp39-macosx_10_9_x86_64.whl (80.8 kB view hashes)

Uploaded CPython 3.9 macOS 10.9+ x86-64

subsetsum-0.0.2-cp39-cp39-macosx_10_9_universal2.whl (144.8 kB view hashes)

Uploaded CPython 3.9 macOS 10.9+ universal2 (ARM64, x86-64)

subsetsum-0.0.2-cp38-cp38-win_amd64.whl (79.3 kB view hashes)

Uploaded CPython 3.8 Windows x86-64

subsetsum-0.0.2-cp38-cp38-win32.whl (71.8 kB view hashes)

Uploaded CPython 3.8 Windows x86

subsetsum-0.0.2-cp38-cp38-musllinux_1_1_x86_64.whl (635.1 kB view hashes)

Uploaded CPython 3.8 musllinux: musl 1.1+ x86-64

subsetsum-0.0.2-cp38-cp38-musllinux_1_1_i686.whl (693.1 kB view hashes)

Uploaded CPython 3.8 musllinux: musl 1.1+ i686

subsetsum-0.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (118.6 kB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

subsetsum-0.0.2-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl (125.5 kB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ i686

subsetsum-0.0.2-cp38-cp38-macosx_10_9_x86_64.whl (80.5 kB view hashes)

Uploaded CPython 3.8 macOS 10.9+ x86-64

subsetsum-0.0.2-cp38-cp38-macosx_10_9_universal2.whl (144.4 kB view hashes)

Uploaded CPython 3.8 macOS 10.9+ universal2 (ARM64, x86-64)

subsetsum-0.0.2-cp37-cp37m-win_amd64.whl (79.8 kB view hashes)

Uploaded CPython 3.7m Windows x86-64

subsetsum-0.0.2-cp37-cp37m-win32.whl (72.5 kB view hashes)

Uploaded CPython 3.7m Windows x86

subsetsum-0.0.2-cp37-cp37m-musllinux_1_1_x86_64.whl (637.3 kB view hashes)

Uploaded CPython 3.7m musllinux: musl 1.1+ x86-64

subsetsum-0.0.2-cp37-cp37m-musllinux_1_1_i686.whl (694.6 kB view hashes)

Uploaded CPython 3.7m musllinux: musl 1.1+ i686

subsetsum-0.0.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (120.2 kB view hashes)

Uploaded CPython 3.7m manylinux: glibc 2.17+ x86-64

subsetsum-0.0.2-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl (127.5 kB view hashes)

Uploaded CPython 3.7m manylinux: glibc 2.17+ i686

subsetsum-0.0.2-cp37-cp37m-macosx_10_9_x86_64.whl (80.0 kB view hashes)

Uploaded CPython 3.7m macOS 10.9+ x86-64

subsetsum-0.0.2-cp36-cp36m-win_amd64.whl (79.7 kB view hashes)

Uploaded CPython 3.6m Windows x86-64

subsetsum-0.0.2-cp36-cp36m-win32.whl (72.5 kB view hashes)

Uploaded CPython 3.6m Windows x86

subsetsum-0.0.2-cp36-cp36m-musllinux_1_1_x86_64.whl (637.1 kB view hashes)

Uploaded CPython 3.6m musllinux: musl 1.1+ x86-64

subsetsum-0.0.2-cp36-cp36m-musllinux_1_1_i686.whl (694.6 kB view hashes)

Uploaded CPython 3.6m musllinux: musl 1.1+ i686

subsetsum-0.0.2-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (120.1 kB view hashes)

Uploaded CPython 3.6m manylinux: glibc 2.17+ x86-64

subsetsum-0.0.2-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl (127.5 kB view hashes)

Uploaded CPython 3.6m manylinux: glibc 2.17+ i686

subsetsum-0.0.2-cp36-cp36m-macosx_10_9_x86_64.whl (80.0 kB view hashes)

Uploaded CPython 3.6m macOS 10.9+ x86-64

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