M_1*_*M_1 5 python arrays puzzle
我的问题非常类似于八个女王之谜.
我有二维数组(N x N),例如,看起来像这样:
0,0,0,0,1 y
0,0,0,0,0 |
0,0,0,0,0 V
0,0,0,1,0
0,0,0,0,0
x->
Run Code Online (Sandbox Code Playgroud)
我正在水平,垂直和对角地检查1的出现次数
\,0,|,0,/
0,\,|,/,0
-,-,1,-,-
0,/,|,\,0
/,0,|,0,\
Run Code Online (Sandbox Code Playgroud)
我正在考虑只在列表中存储"1"的(x,y)位置
[[4,0],[3,3]]
Run Code Online (Sandbox Code Playgroud)
并用数学方法求解,用另一个(x1,y1)< - >(x2,y2)检查"1"的每个位置,
如果x1 == x2或y1 == y2 we have a collision!不检查:
x2 == x1 + z;
y2 == y1 + z;
x2 == x1 - z;
y2 == y1 - z;
Run Code Online (Sandbox Code Playgroud)
(???)
其中z是+/-那个 ( x1+z in 0..N ) and ( y1+z in 0..N ) .......
我的问题是检查对角线碰撞,有更好的方法吗?
dF.*_*dF. 20
一种可能的方案:
def collision(x1, y1, x2, y2):
return x1 == x2 or y1 == y2 or abs(x1-x2) == abs(y1-y2)
Run Code Online (Sandbox Code Playgroud)
即如果两个点位于同一水平行,相同垂直行或相同对角线(垂直距离==水平距离),则存在碰撞.
| 归档时间: |
|
| 查看次数: |
3290 次 |
| 最近记录: |