KombiN is a library for bijectively mapping all ordered pairs from two finite sets into a single linear index. It orders pairs by ascending weight (sum of indices) using a three-region zig-zag algorithm, enabling O(1) bidirectional lookups between pairs and indices.
Project description
KombiN - Python 3 Library
KombiN is a Python library for bijectively mapping all ordered pairs $(a_i, b_j)$ from two finite sets A and B into a single linear index. Pairs are ordered by ascending weight (sum of indices) using a three-region zig-zag algorithm, enabling O(1) bidirectional lookups between pairs and indices.
Installation
Install from PyPI:
pip install kombin-algo-pranavpatel-ca
Usage
Suppose set A has 100 elements and set B has 80 elements, both using zero-based indexing:
from kombin import Table
# Initialize Table for sets A (100 elements) and B (80 elements), zero-based indexing
myObj = Table(100, 80, True)
# Get index for combination pair (ai: 46, bi: 72)
index = myObj.GetIndexOfElements(46, 72)
# Get combination pair from index value
ai, bi = myObj.GetElementsAtIndex(index)
API Reference
Table Class
Constructor:
Table(lengthOfA: int, lengthOfB: int, zeroBasedIndex: bool)
lengthOfA: Number of elements in set A.lengthOfB: Number of elements in set B.zeroBasedIndex:Truefor zero-based,Falsefor one-based indexing.
Methods:
-
GetIndexOfElements(ai: int, bi: int) -> int
Returns the unique index for the pair(ai, bi). -
GetElementsAtIndex(index: int) -> Tuple[int, int]
Returns the pair(ai, bi)for the given index.
Example: Enumerate All Pairs by Weight
table = Table(3, 3, False)
for i in range(1, 10):
ai, bi = table.GetElementsAtIndex(i)
print(f"{i}: ({ai}, {bi})")
Edge Cases & Error Handling
- Raises
ValueErrorfor invalid indices or set sizes. - Large
lengthOfAorlengthOfBmay cause integer overflows in some environments.
License
MIT License. See LICENSE
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters