В форме f(x,y,z)
, где x
- заданная целочисленная сумма, y
- минимальная длина последовательности, а z
- максимальная длина последовательности. Но сейчас давайте представим, что мы имеем дело с последовательностью фиксированной длины, потому что в противном случае мне понадобится много времени, чтобы написать вопрос.
Итак, наша функция - f(x,r)
, где x
- заданная целочисленная сумма, а r
- длина последовательности в списке возможных последовательностей.
Для x = 10
и r = 2
возможны следующие комбинации:
1 + 9
2 + 8
3 + 7
4 + 6
5 + 5
Давайте сохраним это в Python как список пар:
[(1,9), (2,8), (3,7), (4,6), (5,5)]
Таким образом, использование выглядит так:
>>> f(10,2)
[(1,9), (2,8), (3,7), (4,6), (5,5)]
Вернуться к исходному вопросу, где последовательность возвращается для каждой длины в диапазоне (y,x)
. В форме f(x,y,z)
, определенной ранее и не содержащей последовательности длиной 1
(где y-z == 0
), это будет выглядеть так:
>>> f(10,1,3)
[{1: [(1,9), (2,8), (3,7), (4,6), (5,5)],
2: [(1,1,8), (1,2,7), (1,3,6) ... (2,4,4) ...],
3: [(1,1,1,7) ...]}]
Таким образом, вывод представляет собой список словарей, где значение представляет собой список пар. Не совсем оптимально.
Итак, мои вопросы:
- Есть ли библиотека, которая уже обрабатывает это?
- Если нет, может кто-нибудь помочь мне написать обе упомянутые функции? (сначала фиксированная длина последовательности)?
- Из-за огромных пробелов в моих знаниях по тривиальной математике, не могли бы вы проигнорировать мой подход к целочисленному хранилищу и использовать любую структуру, которая наиболее целесообразна?
Извините за все эти арифметические вопросы сегодня. Спасибо!