【问题标题】:Avoiding a repeated verb name in a train避免在火车上重复动词名称
【发布时间】:2017-10-22 20:24:55
【问题描述】:

考虑一个二元动词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!

【问题讨论】:

  • 鲍勃在一般情况下是对的。如果您就您的具体案例向我们提供更多详细信息和背景信息,可能会有本地解决方案。
  • @DanBron 谢谢。我已经更新了帖子。

标签: j


【解决方案1】:

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

【讨论】:

  • 打高尔夫球的解决方案很漂亮,但我不知道您是如何将^: 解决方案映射到它的。它解析like this,这意味着它等同于4 (0&(|:{.,],{:)) m,但由于0已经作为左边的arg绑定到它右边的动词,我看不出4在哪里发挥作用或它是如何产生的最终结果。
  • @Jonah 设m 为矩阵,n 为矩阵扩展的次数。它的细分是 m (0&(|:{.,],{:)~+:) nm 0&(|:{.,],{:)~ (+: n)(+: n) 0&(|:{.,],{:) m(0&(|:{.,],{:))^:(+: n) m
  • 直到最后一步才有意义:那里应用了什么规则?
  • @Jonah 这是债券& 的另一条规则,其中名词与二元结合,然后以二元方式调用。例如,x m&f y 变为 m&f^:x y
  • 啊,好吧,这是有道理的,我认为真的不知道那个,或者至少完全忘记了它。很好的解决方案。你应该发布它。
【解决方案2】:

我认为这是不可能的。右尖叉将是x f y 的结果,左尖叉是x 中间尖叉将转置并将f 应用于参数,然后将结果转置回来。如果你把右边的f 拿出来,那么就没有办法得到x f y,如果中间的f 被删除,那么你就没有f 应用于转置。

我的猜测是,您正在寻找一种原语,该原语只需提及一次f,即可实现相同的结果,但我不知道。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-19
    • 1970-01-01
    • 2019-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多