Lazy (next?) tuples
Для вложенного n x m
списка [[e11, e12, … ], [e21, e22, … ], …]
необходимо составить все возможные кортежи "по одному элементу из списка" без повторений. Можно рассмотреть списки индексов, потом я смогу получить элементы.
Кортежи должны выдаваться lazy или next способом, без размещения их всех в памяти. Вполне допустимо использовать вложенные for
, но не более 3 уровней. Нельзя использовать библиотеки, решение должно быть обще-алгоритмическим.
То есть для [[1, 2, 3, …, n], [1, 2, 3, …, n], …]
нужно последовательно получать
[1, 1, 1, ...,1], [1, 1, 1, ..., 2], …, [n, n, …, n]
.
Порядок может быть любым, но должны быть представлены все кортежи без повторений.
Я изучил алгоритм next permutation и думаю это близко, но не могу сделать окончательно.
Буду благодарен за любые идеи, можно использовать Python, Javascript или псевдокод.