Skip to main content

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: True for zero-based, False for 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 ValueError for invalid indices or set sizes.
  • Large lengthOfA or lengthOfB may cause integer overflows in some environments.

License

MIT License. See LICENSE

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

kombin_algo_pranavpatel_ca-1.0.3.tar.gz (5.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

kombin_algo_pranavpatel_ca-1.0.3-py3-none-any.whl (4.9 kB view details)

Uploaded Python 3

File details

Details for the file kombin_algo_pranavpatel_ca-1.0.3.tar.gz.

File metadata

File hashes

Hashes for kombin_algo_pranavpatel_ca-1.0.3.tar.gz
Algorithm Hash digest
SHA256 587483a03f455d39a83ce21e35fa03792c48852655d2fafe411fac8dd6cb4e87
MD5 dc7a46eb9ea2ae083123ac9846101832
BLAKE2b-256 ff8a6ffe10db080e54e22ef9f07aac5bdba3896575ff5617095d922ade5a68a7

See more details on using hashes here.

File details

Details for the file kombin_algo_pranavpatel_ca-1.0.3-py3-none-any.whl.

File metadata

File hashes

Hashes for kombin_algo_pranavpatel_ca-1.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 1dca416ed417cdac180631faaf58748ed076d6d3e7cfea24d92f596a7de42afc
MD5 d162dcfb6239a94a9715571bd996d59a
BLAKE2b-256 5f51b1e1922870fea33d5ce862607b60b5dcad00f80e8f34bcaec1e25ea567ea

See more details on using hashes here.

Supported by

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