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
- Generating combinations through generating combination successors.
- Calculating an arbitrary mathematical combination from a given lexicographical index (unranking) and, not explicit in McCaffrey' article,
- 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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0856ed0e071bac52846249de8154525196dcfa34b438218de77658040500143e |
|
MD5 | 578fde8bf4da6f63146479fd02382174 |
|
BLAKE2b-256 | bded3415e373da1861ba736814f69ada7f9e1ffda6cc19fa1d00c10fb0964ce1 |
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | f3aa20c9ae8d0868844fe56c6cc8246cd86006f1f9db4d5e9d7213293dd15fb3 |
|
MD5 | 25203cfd11f1408d0a5221fe0145a3a2 |
|
BLAKE2b-256 | 9e70e9770e4ebaad0eed9e389a8f6f6b80591f1fa7377f893ef03b1c67d69a80 |