【发布时间】:2021-11-10 14:11:39
【问题描述】:
我正在尝试使用 J 编程语言在 0 和 1 的矩阵中找到所有 1 的 4 个邻居。我已经制定了一种方法,但正在尝试找到一种更紧凑的方法。
为了说明,假设我有矩阵 M-
] M=. 4 4$0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0
0 0 0 0
0 0 1 0
0 0 0 0
0 0 0 0
我想生成——
0 0 1 0
0 1 0 1
0 0 1 0
0 0 0 0
我已经整理了一些接近的东西(我欠这个小宝石:https://www.reddit.com/r/cellular_automata/comments/9kw21u/i_made_a_34byte_implementation_of_conways_game_of/)—
] +/+/(|:i:1*(2 2)$1 0 0 1)&|.M
0 0 1 0
0 1 2 1
0 0 1 0
0 0 0 0
这很好,因为无论如何我都会对最初的 1 进行加权(无论如何,实际数字对我的应用程序来说并不是那么重要)。但我觉得这可以更紧凑,我刚刚碰壁了。并且表达式的紧凑性实际上对我的应用程序很重要。
【问题讨论】:
-
如果你想为了简短而牺牲可读性,你可以使用
+/(2,\5$0,i:1)|.M或类似的东西。