GNU APL中带有索引参数的行缩减

时间:2019-06-20 11:57:58

标签: data-structures gnu fold apl

我正在使用以下数据结构:

x1a ← 2 1 ⍴ 1 0
x1b ← ⍬

x2a ← 2 2 ⍴ 1 1 0 0
x2b ← 2 1 ⍴ 1 0

x3a ← 1 2 ⍴ 1 0
x3b ← 1

q ← (x3a x3b) (x2a x2b) (x1a x1b)

并尝试等效于以下操作的行减少:

output ← x3b + x3a +.× x2b + x2a +.× x1a

我本以为结果将类似于以下内容,但是我无法获得正确的等级/操作:

{⍵[2] + ⍺[1] +.× ⍵[1]}/q

感谢任何建议或帮助!

1 个答案:

答案 0 :(得分:2)

存在三个问题:

  1. 您正在使用⍵[1],它将为您提供的封闭元素。改用“ pick”。

  2. 您有错字:⍵[2]应该改用,即2⊃⍺

  3. 您要简化的函数期望其正确的参数为两个元素向量,其中仅使用第一个元素。因此,它需要为下一次迭代返回这样的结构。

还请注意,由于/需要将等级从1降低到0,因此结果将全部包含在内,并且还将插入虚拟元素,因此我们需要选择唯一元素的第一个元素,即⍬ 1⊃

      x3b + x3a +.× x2b + x2a +.× x1a
3
      ⍬ 1⊃{((2⊃⍺) + (1⊃⍺) +.× (1⊃⍵)) 'dummy'}/q
3

Try it online!