Я пытающегося Проект Эйлера # 15, который по существу сводится к вычислению числа двоичных списков длины 2 * размер таким образом, что их записи подводить к размер, для конкретного кейс размер = 20. Например, если size = 2 существует 6 таких списков: [1,1,0,0], [1,0,1,0], [1,0,0,1], [0,1, 1,0], [0,1,1,0], [0,1,0,1], [0,0,1,1]. Конечно, число таких последовательностей тривиально для вычисления для любого значения размера и равно некоторому биномиальному коэффициенту, но меня интересует явное генерирование правильных последовательностей в Python. Я пробовал следующее:вырабатывающих двоичные списки, сумму заданного числа
import itertools
size = 20
binary_lists = itertools.product(range(2), repeat = 2*size)
lattice_paths = {lists for lists in binary_lists if sum(lists) == size}
, но последняя строка заставляет меня столкнуться с ошибками памяти. Что было бы аккуратным путем для этого?
Не является ли это в принципе то же самое, что спрашивать «сколько способов я могу разместить * размер * 1 в * 2 \ * размер * слоты?" – NightShadeQueen
@NightShadeQueen: Нет, если вы хотите увидеть все перечисленные способы. –