sprig.comb module¶
A collection of utils for doing combinatorics.
-
class
sprig.comb.Combinations(s: Iterable[T], k: int)¶ Bases:
Generic[sprig.comb.T]Create an object that represent a collection of combinations.
Useful for slicing or sampling from series too long to iterate over with itertools.combinations.
-
caches: Dict[int, sprig.comb.IntervalCache[Tuple[int, int]]] = {}¶
-
static
clear_cache()¶
-
gen_combinadic(index: int) → Iterator[int]¶ Compute the index’th combinadic.
e.g. 4 = 4 choose 3 + 1 choose 2 + 0 choose 1, thus
>>> tuple(Combinations(range(5), 3).gen_combinadic(4)) (4, 1, 0)
-
static
max_n_choose_k_below_limit(n: int, k: int, limit: int) → Tuple[int, int]¶ Compute the largest n s.t. n choose k < limit. Return also the corresponding value of n choose k for optimization.
e.g. 5 choose 3 = 10 > 5 but 4 choose 3 = 4 < 5, thus
>>> Combinations.max_n_choose_k_below_limit(5, 3, 5) (4, 4)
-
-
class
sprig.comb.IntervalCache¶ Bases:
Generic[sprig.comb.T]-
get(item: float) → T¶
-
set(lower: float, upper: float, value: T) → None¶
-
-
sprig.comb.comb(n: int, k: int) → int¶ Compute binomial coefficient n choose k