Member 14583996 Ответов: 1

Python кодирование списка перестановок/комбинаций из 75 элементов дает полное сообщение об ошибке памяти


Я новичок в кодировании python, но хотел бы использовать его для генерации всех перестановок и комбинаций макета трека slot car с учетом списка фрагментов трека. Я думаю, что каждый кусок дорожки-это блок, который соединяется на каждом конце. Изогнутые части-это просто изогнутые блоки. Блоки должны выстраиваться один за другим в линию и делать петлю, если она не делает петлю, то макет отбрасывается. Я добрался до 10 кусочков трека, прежде чем у меня закончилась память. У меня есть 75 частей трека, состоящих из прямых и изогнутых частей. При этом не учитывается, что каждый изогнутый участок трассы может быть обращен вверх или вниз.

Наконец, я хочу сохранить каждый завершенный макет цикла, чтобы использовать его в качестве списка входных данных для создания графического изображения макета трека slot car.

Любая помощь в том, как это закодировать, будет глубоко признательна.

Что я уже пробовал:

импорт itertools
от импортных печатные печатные
импорт включает в себя как НП

#ввод данные = [[9,0],[10,45],[10,45],[9,0],[10,45],[10,45]]
#ввод данные = [9,9,9,9,9,9,9,9,9,9,9,9,9,9,15,15,15,15,15,15,15,15,15,15,15,6,6,6,6,6,6,6]
ввод данные = [9,9,9,15,15,15,15,6,9,3]
результат = список(модуле itertools.перестановки(ввод данные))
outputArrays = np.array_split(result,len(result))
#print(outputArrays[100]) #для печати одного элемента списка.
печатные(outputArrays)

Richard MacCutchan

Проверьте документацию itertools, чтобы узнать, есть ли в ней какие-либо ограничения на количество значений, которые вы можете использовать.

1 Ответов

Рейтинг:
0

Richard MacCutchan

Я только что попробовал ваш код, и мне кажется, что повторяющиеся номера являются причиной проблемы.

Проблема заключается в количестве элементов в вашей дате. Число перестановок множества равно !n. Таким образом, в вашем случае с 10 элементами число перестановок равно !10 или 3 628 800. Это то, что приводит к переполнению памяти.