避免在火车上重复动词名称
Avoiding a repeated verb name in a train
考虑一个二元动词 g
,根据二元动词 f
:
定义
g=. [ f&.|: f
是否可以重写 g
以便 f
项只出现一次,但行为不变?
更新:本地上下文
这个问题是我对 this problem 的解决方案的一部分,"expanding" 是一个双向矩阵,如下所示:
原始矩阵
1 2 3
4 5 6
7 8 9
扩展矩阵
1 1 1 1 2 3 3 3 3
1 1 1 1 2 3 3 3 3
1 1 1 1 2 3 3 3 3
1 1 1 1 2 3 3 3 3
4 4 4 4 5 6 6 6 6
7 7 7 7 8 9 9 9 9
7 7 7 7 8 9 9 9 9
7 7 7 7 8 9 9 9 9
7 7 7 7 8 9 9 9 9
我的解决方案是首先使用以下方法扩展矩阵行:
f=. ([ # ,:@{.@]) , ] , [ # ,:@{:@]
然后在转置下应用相同的解决方案来扩展已经行扩展的矩阵的列:
3 ([ f&.|: f) m
而且我注意到我无法通过制作临时动词 f
或重复其内联定义来编写我的解决方案...
我认为这是不可能的。右齿将是 x f y
的结果,左齿是 x
中间齿将转置并将 f
应用于参数,然后将结果转回。如果你把右边的 f
拿出来,那么就没有办法得到 x f y
,如果中间的 f
被去掉,那么你就没有 f
应用于转置。
我的猜测是,您正在寻找一种仅需提及一次 f
即可实现相同结果的基元,但我不知道有一个。
了解 J 社区的人会证明我错了!
了解上下文会有所帮助。您也可以使用 (|:@f)^:(+: x) y
来解决这个问题。一个默认的(和打高尔夫球的)解决方案是 0&(|:{.,],{:)~+:
.
(>: i. 3 3) (0&(|:{.,],{:)~+:) 2
1 1 1 2 3 3 3
1 1 1 2 3 3 3
1 1 1 2 3 3 3
4 4 4 5 6 6 6
7 7 7 8 9 9 9
7 7 7 8 9 9 9
7 7 7 8 9 9 9
考虑一个二元动词 g
,根据二元动词 f
:
g=. [ f&.|: f
是否可以重写 g
以便 f
项只出现一次,但行为不变?
更新:本地上下文
这个问题是我对 this problem 的解决方案的一部分,"expanding" 是一个双向矩阵,如下所示:
原始矩阵
1 2 3
4 5 6
7 8 9
扩展矩阵
1 1 1 1 2 3 3 3 3
1 1 1 1 2 3 3 3 3
1 1 1 1 2 3 3 3 3
1 1 1 1 2 3 3 3 3
4 4 4 4 5 6 6 6 6
7 7 7 7 8 9 9 9 9
7 7 7 7 8 9 9 9 9
7 7 7 7 8 9 9 9 9
7 7 7 7 8 9 9 9 9
我的解决方案是首先使用以下方法扩展矩阵行:
f=. ([ # ,:@{.@]) , ] , [ # ,:@{:@]
然后在转置下应用相同的解决方案来扩展已经行扩展的矩阵的列:
3 ([ f&.|: f) m
而且我注意到我无法通过制作临时动词 f
或重复其内联定义来编写我的解决方案...
我认为这是不可能的。右齿将是 x f y
的结果,左齿是 x
中间齿将转置并将 f
应用于参数,然后将结果转回。如果你把右边的 f
拿出来,那么就没有办法得到 x f y
,如果中间的 f
被去掉,那么你就没有 f
应用于转置。
我的猜测是,您正在寻找一种仅需提及一次 f
即可实现相同结果的基元,但我不知道有一个。
了解 J 社区的人会证明我错了!
了解上下文会有所帮助。您也可以使用 (|:@f)^:(+: x) y
来解决这个问题。一个默认的(和打高尔夫球的)解决方案是 0&(|:{.,],{:)~+:
.
(>: i. 3 3) (0&(|:{.,],{:)~+:) 2
1 1 1 2 3 3 3
1 1 1 2 3 3 3
1 1 1 2 3 3 3
4 4 4 5 6 6 6
7 7 7 8 9 9 9
7 7 7 8 9 9 9
7 7 7 8 9 9 9