默写 {(+/3<?⍵⍴6)×100÷⍵}1000



受Conor Hoekstra YouTube视频的启发,我尝试在APL中做一些小步骤,并将我的小线条转换为无点风格。但对于这个(1000个die-6卷中4、5或6卷的百分比(,我无法理解如何在整形前消除ω。

{(+/3<?⍵⍴6)×100÷⍵}1000

让我们一步一步来:

{(+/3<?⍵⍴6)×100÷⍵}

首先,我们需要将使用参数的函数的每一部分表示为的函数。乘法结合了两个主要部分:

{+/3<?⍵⍴6}×{100÷⍵}

在最右边的部分,{100÷⍵},我们需要这个论点。我们有几种方法可以处理这个问题:

  1. 我们可以使用身份函数来表示它:100÷⊢
  2. 我们可以将左参数100绑定(也称为curry(到函数÷,从而生成一元函数:100∘÷

让我们采取最后一种方法:

{+/3<?⍵⍴6}×100∘÷

在左边的部分{+/3<?⍵⍴6}中,我们可以做同样的事情,但需要注意两件事,每件事都可以用几种不同的方式处理:

  1. 我们有一个常数6,作为函数的最右边部分。
    1. 我们可以把常数变成一个常数函数:6⍨
    2. 我们可以转换(也称为交换或切换(的参数,并使用一个身份函数:6⍴⍨⊢
    3. 我们可以将正确的自变量6绑定到函数,从而生成一元函数:⍴∘6
  2. 我们有一个一元函数?,在中间。
    1. 我们可以在:?⍤⍴上合成?
    2. 我们可以在<的旁边组合?<∘?

让我们对每个问题采取最后一种方法:

(+/3<∘?⍴∘6)×100∘÷

这是一个完全隐含的等价于一元函数{(+/3<?⍵⍴6)×100÷⍵}。然而,还有一个技巧可以用来消除括号。由于×是可交换的,我们可以交换它的自变量,将更复杂的表达式放在右边:

100∘÷×(+/3<∘?⍴∘6)

然而,现在我们有一个问题,一元+/在中间。观察<在右边看到一个向量,在左边看到一个标量。在标量函数FGF/s G v与标量s和向量v的情况下,内积s F.G v是等价的,因此我们可以将求和与比较组合如下:

100∘÷×3+.<∘?⍴∘6

或者,我们可以观察到求和等价于在基1中的求值,因为在基1的位置值是(…,12,11、10(=(…,1,1(,所以如果我们有列表(…,cba(,并将其作为基1的数字求值,我们得到:

(…+c×12+bx 1a?10(=

(…+c+b+a(

也就是我们列表的总和。我们可以这样写:

100∘÷×1⊥3<∘?⍴∘6

相关内容

  • 没有找到相关文章

最新更新