Skip to main content

Combinatorial system of degree k ranking and unranking.

Project description

combinadics

Combinatorial system of degree k ranking and unranking is a standalone simple (not necessarily the most efficient) module to compute the combinadics of a natural number (a.k.a unranking) and the inverse operation (a.k.a ranking)

Code is a commented python implementation of James McCaffrey' concepts of

  1. Generating combinations through generating combination successors.
  2. Calculating an arbitrary mathematical combination from a given lexicographical index (unranking) and, not explicit in McCaffrey' article,
  3. Given a combination, calculate its lexicographical index (ranking).

Note that in the original article the author claims that the combinations he presents are in lexicographic order, which is not true. However, both his discussion and code are correct.

Installation

pip install combinadics

Use

from combinadics import Choose, Combination

combinations = Choose(5,3)
print("Choose(5,3) results in {} combinations".format(combinations))

combination = Combination(5,3)

print("Combination(5, 3) is initially {}".format(Combination(5,3)))

print("The lexicographic successor of combination {} is {}".format(
    combination, combination.Successor()
    ))

print("Now we set the combination data to be {0 3 4}")

combination.data = [0, 3, 4]
print("The lexicographic successor of combination {} is {}".format(
    combination, combination.Successor()
    ))


combination = Combination(5, 3, [2, 3, 4])
print("The rank of combination {} is {}".format(
    combination, combination.Rank()
    ))

combination = Combination(5, 3)
position = 3
print("In position {} we find combination {}".format(
    position, combination.Element(position)
    ))

outputs

Choose(5,3) results in 10 combinations
Combination(5, 3) is initially {0 1 2}
The lexicographic successor of combination {0 1 2} is {0 1 3}
Now we set the combination data to be {0 3 4}
The lexicographic successor of combination {0 3 4} is {1 2 3}
The rank of combination {2 3 4} is 9
In position 3 we find combination {0 2 3}

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

combinadics-0.0.3.tar.gz (6.1 kB view details)

Uploaded Source

Built Distribution

combinadics-0.0.3-py3-none-any.whl (7.2 kB view details)

Uploaded Python 3

File details

Details for the file combinadics-0.0.3.tar.gz.

File metadata

  • Download URL: combinadics-0.0.3.tar.gz
  • Upload date:
  • Size: 6.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.10.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.0 CPython/3.7.10

File hashes

Hashes for combinadics-0.0.3.tar.gz
Algorithm Hash digest
SHA256 0856ed0e071bac52846249de8154525196dcfa34b438218de77658040500143e
MD5 578fde8bf4da6f63146479fd02382174
BLAKE2b-256 bded3415e373da1861ba736814f69ada7f9e1ffda6cc19fa1d00c10fb0964ce1

See more details on using hashes here.

File details

Details for the file combinadics-0.0.3-py3-none-any.whl.

File metadata

  • Download URL: combinadics-0.0.3-py3-none-any.whl
  • Upload date:
  • Size: 7.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.10.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.0 CPython/3.7.10

File hashes

Hashes for combinadics-0.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 f3aa20c9ae8d0868844fe56c6cc8246cd86006f1f9db4d5e9d7213293dd15fb3
MD5 25203cfd11f1408d0a5221fe0145a3a2
BLAKE2b-256 9e70e9770e4ebaad0eed9e389a8f6f6b80591f1fa7377f893ef03b1c67d69a80

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