您的目标是创建一个函数,该函数接受2D空间中单元格的坐标和距离r,并返回输入坐标半径r的von邻域中所有单元格的坐标。也就是说,所有的细胞最多r在曼哈顿距离中。例如,给定以下单元格坐标和半径对:
[1, 1], 1 -> [0, 1], [1, 0], [1, 1], [1, 2], [2, 1]
[2, 2], 2 -> [0, 2], [1, 1], [1, 2], [1, 3], [2, 0], [2, 1], [2, 2], [2, 3], [2, 4], [3, 1], [3, 2], [3, 3], [4, 2]这就是冯·诺依曼社区的样子:

有关von邻域的更多信息可以找到这里。
这是密码-高尔夫,所以最短的字节数获胜!
发布于 2022-12-24 08:05:33
k□0zJẋΠṠUMṠ在网上试试!取r,然后取坐标。
k□ # cardinal directions [[0,1],[1,0],[0,-1],[-1,0]]
0z # 0 zipped into self [[0,0]]
J # join [[0,1],[1,0],[0,-1],[-1,0],[0,0]]
ẋ # repeated into a list r times
Π # reduce by cartesian product
Ṡ # vectorising sum
U # remove duplicates
M # pair each direction into the input coordinate
Ṡ # and sum to it发布于 2021-01-02 22:44:46
发布于 2021-01-07 14:26:40
ŒRṗ2AS>³ƲÐḟ+一种接受半径和点的并元连接。
ŒRṗ2AS>³ƲÐḟ+ Main dyadic link accepting r, [x,y]
ŒR [-r..r]
ṗ2 [-r..r]^2 (Cartesian product)
Ðḟ Filter out by
Ʋ (
A Absolute value (of both)
S Sum
>³ Greater than r
Ʋ )
+ Add [x,y] to eachŒRAạ³ŒR;€Ʋ€Ẏ+一种接受半径和点的并元连接。
ŒRAạ³ŒR;€Ʋ€Ẏ+ Main dyadic link accepting r, [x,y]
ŒR [-r..r]
€ For each i in [-r..r]
Ʋ (
A |i|
ạ³ |(|i| - r)|
ŒR [-|(|i| - r)| .. |(|i| - r)|]
;€ Join each with i
Ʋ )
Ẏ Tighten (flatten by one level)
+ Add [x,y] to eachhttps://codegolf.stackexchange.com/questions/217181
复制相似问题