我試圖創建一種解決問題的方法,其中缺少4個角的3x4表。目標是創建一個算法來填充表格,數字從1到8,其中這兩個數字都不能接近它之前數字的一個單元格(例如:2不能接近1)的一個塊,都在垂直,水平和對角線。MemoryError和生成器
由於我是新手編程,我可能會做錯誤的方式,我將生成單元格中所有可能的數字位置列表。但對於3x4-4網格,大約有8^8個可能的情況(從[1,2,3,4,5,6,7,8]到[8,7,6,5,4,3,2, 1])
我這樣做是因爲我的第一個想法是做一個函數來測試數據,如果它匹配之後的標準,不需要每次都生成數字。我正在使用pickle將數據轉儲到txt文件中。但該文件是280MB,它凍結了我的電腦幾分鐘,然後它打印內存錯誤。
對不起,如果這沒有意義,我已經開始編程一個星期前。
我當前的代碼來生成該列表是:
for a in xrange(1,9):
for b in xrange(1, 9):
for c in xrange(1, 9):
for d in xrange(1, 9):
for e in xrange(1, 9):
for f in xrange(1, 9):
for g in xrange(1, 9):
for h in xrange(1, 9):
if a != (b and c and d and e and f and g and h) and b != (
a and c and d and e and f and g and h) and c != (
b and a and d and e and f and g and h) and d != (
b and c and a and e and f and g and h) and e != (
b and c and d and a and f and g and h) and f != (
b and c and d and e and a and g and h) and g != (
b and c and d and e and f and a and h) and h != (b and c and d and e and f and g and a):
probs.append((a, b, c, d, e,f,g,h))
您可能想要查看'itertools'來生成您的特定組合,而不是。 –
您應該認真考慮['itertools.product'](http://docs.python.org/2/library/itertools.html#itertools.product) – thefourtheye
您正在創建一個包含9x9x9x9x9x9x9x9元素的數組,並且這些元素是8個數字的數組。這是巨大的。 – Barmar