找到一个二重循环遍历某个点的上下左右四个临近点的方法

2019-10-18 00:06:08 +08:00
 mskf

在同一个循环中,也可以遍历四个斜着的临近点

for i in [-1,1]:
    for j in [-1,1]:
    	# top,left,right,bottom
    	nx, ny = x+(i+j)//2,y+(i-j)//2
        
        # corners
        nx, ny = x+i,y+j

以前都是写死 x+1,y x,y+1... 然后遍历,或者用三角函数循环角度,感觉上面写更简洁

3662 次点击
所在节点    算法
3 条回复
ZRS
2019-10-18 00:07:31 +08:00
巧妙
taotaodaddy
2019-10-18 00:10:25 +08:00
棒棒
mskf
2019-10-18 00:12:11 +08:00
如果在其他语言中使用 for I = 0 to 1 遍历,只需要在开头加上 i=1-2*I, j=1-2*J 就可以了,下面完全一样

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/610481

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX