.. testcode::
+ def multinomial(*counts):
+ "Number of distinct arrangements of a multiset."
+ # Counter('abracadabra').values() → 5 2 2 1 1
+ # multinomial(5, 2, 2, 1, 1) → 83160
+ return prod(map(comb, accumulate(counts), counts))
+
def powerset(iterable):
"Subsequences of the iterable from shortest to longest."
# powerset([1,2,3]) → () (1,) (2,) (3,) (1,2) (1,3) (2,3) (1,2,3)
n -= n // prime
return n
- def multinomial(*counts):
- "Number of distinct arrangements of a multiset."
- # Counter('abracadabra').values() → 5 2 2 1 1
- # multinomial(5, 2, 2, 1, 1) → 83160
- return prod(map(comb, accumulate(counts), counts))
-
.. doctest::
:hide: