首页
学习
活动
专区
圈层
工具
发布

Von邻域
EN

Code Golf用户
提问于 2021-01-02 21:59:12
回答 16查看 860关注 0票数 13

您的目标是创建一个函数,该函数接受2D空间中单元格的坐标和距离r,并返回输入坐标半径r的von邻域中所有单元格的坐标。也就是说,所有的细胞最多r曼哈顿距离中。例如,给定以下单元格坐标和半径对:

代码语言:javascript
复制
[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邻域的更多信息可以找到这里

这是密码-高尔夫,所以最短的字节数获胜!

EN

回答 16

Code Golf用户

回答已采纳

发布于 2022-12-24 08:05:33

维沙尔,11字节

代码语言:javascript
复制
k□0zJẋΠṠUMṠ

在网上试试!r,然后取坐标。

代码语言:javascript
复制
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
票数 3
EN

Code Golf用户

发布于 2021-01-02 22:44:46

Dyalog扩展,23字节

-4多亏了ovs。

匿名默示内固定函数,以单元格和半径的坐标作为左、右参数。需要基于0的索引。

代码语言:javascript
复制
{⍺∘+¨⍵-⍸⍵≥+/¨|∘.,⍨⍵…-⍵}

在网上试试!

{} "dfn";左参数为,右参数为

从半径到负半径的⍵…-⍵ 包含整数范围

∘.,⍨ 笛卡尔自拍产品

⊢m← 分配给m并传递给

| 绝对值

+/¨ 和每个(给出曼哈顿距离的矩阵)

⍵≥ 表示小于或等于半径的

ɩ”在其中为真

⍵- 减去radius

⍺∘+¨ 向每个单元格添加单元格坐标

票数 5
EN

Code Golf用户

发布于 2021-01-07 14:26:40

果冻,12字节

代码语言:javascript
复制
ŒRṗ2AS>³ƲÐḟ+

在网上试试!

一种接受半径和点的并元连接。

解释

代码语言:javascript
复制
Œ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

果冻,13字节

代码语言:javascript
复制
ŒRAạ³ŒR;€Ʋ€Ẏ+

在网上试试!

一种接受半径和点的并元连接。

解释

代码语言:javascript
复制
Œ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 each
票数 2
EN
页面原文内容由Code Golf提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codegolf.stackexchange.com/questions/217181

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档