在火车上避免重复的动词名称

时间:2017-10-22 20:24:55

标签: j

考虑一个二元动词g,用动词f定义:

g=. [ f&.|: f

是否可以重写g以便f词只出现一次,但行为不变?

更新:本地上下文

这个问题是我this problem解决方案的一部分,它在两个方向上“扩展”矩阵,如下所示:

原始矩阵

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编写我的解决方案是不可能的,或者重复其内联定义......

Try it online!

2 个答案:

答案 0 :(得分:2)

了解上下文有帮助。您也可以使用(|:@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

答案 1 :(得分:1)

我认为不可能。正确的齿将是x f y的结果,左齿为x中间齿将转置并将f应用于参数,然后将结果转置回来。如果你选择了正确的f,那么就无法拥有x f y,如果中间f被删除,那么你没有将f应用于转置。

我的猜测是你正在寻找一个只用一次提及f就能完成相同结果的原语,但我不知道一个。

了解J社区有人会证明我错了!

相关问题