""" Utility functions for the Calabi-Yau period geometry project. """ def _multi_indices(no_variables, total_degree: int) -> list: # All no_variables-tuples of non-negative integers whose entries sum to at most total_degree. def helper(remaining_vars, remaining_degree): if remaining_vars == 0: yield () return for first in range(remaining_degree + 1): for rest in helper(remaining_vars - 1, remaining_degree - first): yield (first,) + rest return list(helper(no_variables, total_degree))