我是python中的菜鸟 好吧,我观看了来自numberphile的视频(https://youtu.be/1MtEUErz7Gg) 这是关于sandpiles(添加它们)所以我决定编写我自己的python程序来添加2个sandpiles。 但由于某种原因,它不起作用 该程序给了我错误的总和,如2 + 2 = 7类型错误
它应该给我:
[[2,2,0],[2,1,1],[0,1,3]] + [[2,1,0],[1,0,1],[3,1] ,0]] = [[2,1,0],[0,3,3],[1,2,3]]
但是给出了:
[[2,2,0],[2,1,1],[0,1,3]] + [[2,1,0],[1,0,1],[3,1] ,0]] = [[1,3,3],[0,1,2],[2,2,3]]
这是我的代码
$char-w: 1ch;
$gap: .5*$char-w;
$n-char: 7;
$in-w: $n-char*($char-w + $gap);
input {
border: none;
width: $in-w;
background: repeating-linear-gradient(90deg,
dimgrey 0, dimgrey $char-w,
transparent 0, transparent $char-w + $gap)
0 100%/100% 2px no-repeat;
font: 5ch consolas, monospace;
letter-spacing: $gap;
&:focus {
outline: none;
color: dodgerblue;
}
}
答案 0 :(得分:0)
你真的应该在你的问题中更具体。按原样运行代码会导致错误。
无论如何,看起来奇怪的一件事是检查功能。是否应该过滤掉沙堆外的指数?在这种情况下,我认为你会看到这里遗漏的东西:
if (neg[i][j] < 0) or (neg[i][j]):
请尝试使用此功能:
if (neg[i][j] < 0) or (neg[i][j] > 2):
这个循环的第二个问题是你在迭代它时从neg del(neg[i])
删除元素。这很容易出错。您可能已经注意到,只要删除某个项目,i
就会超出范围。
过滤列表的更好方法是使用列表推导,如下所示:
neighbors = [ [i, j+1], [i+1, j], [i, j-1], [i-1,j] ]
neighbors = [n for n in neighbours if n[0] in [0, 1, 2] and n[1] in [0, 1, 2]]