【问题标题】:How does this APL golden ratio code work?这个 APL 黄金比例代码是如何工作的?
【发布时间】:2018-09-02 03:56:30
【问题描述】:

这是 Dyalog APL 中黄金比例的代码:

1+∘÷⍣=1

我不明白。 “1 plus compose rec repeat 等于 1”没有任何意义。

【问题讨论】:

    标签: apl


    【解决方案1】:

    的操作数是+∘÷(左)和=(右)。它的参数都是1

    的函数右操作数是“直到”,它重复左操作数,直到右操作数(使用最后两个结果调用)给出1。所以,这里⍣= 是“重复直到相等”——找到不动点。

    使用与其左参数相同的左参数调用其左操作数(所以总是1),但用新结果循环右操作数。
    所以,+∘÷ 被称为 dyadically,这与 dfn {⍺ + ÷⍵} 相同。 这里总是相同的 1,因为这是 的左参数。

    总之,这段代码执行1 + ÷last,直到最后一个结果和这个相等。 Try it online!

    Dyalog APL ]box on -trains=tree:

      ⍣ 
     ┌┴┐
     ∘ =
    ┌┴┐ 
    + ÷ 
    

    【讨论】:

    • 那么,我该如何做你刚才所做的向我展示结构的事情?我在那里复制了“]box on -trains=tree”,它一直说“Usage: ]box on | off”。我使用 TryAPL
    • @Ikura tryAPL 似乎没有]box 的选项,所以只需]box on 就足够了
    【解决方案2】:

    +∘÷

    倒数被单子应用于右操作数,结果被添加到左操作数。 10+∘÷4 → 10.251+∘÷1 → 2

    ⍣号码

    当我们重复一个二元函数时,右操作数被“更新”,但左操作数保持不变。 1+∘÷⍣2⊢1 → 1+∘÷2 → 1.5

    ⍣功能

    一次又一次地重复,只要(当前结果)f(上一个结果)为假。这样,⍣= 会重复直到收敛,就像“∞ 次”一样。

    【讨论】:

    • 啊哈!很好!我知道这种回报和增加的方法!
    【解决方案3】:

    现在我明白了,谢谢你!让我总结一下! x+∘÷y 是复合函数。首先,您计算 1/y,然后,它由加法组成,并加上 x。现在,这就是我们喜欢酸糖(他总是皱着眉头)重复的家伙进来的地方!一个测试: 1 (+⍣10) 1. 他从 1 开始,然后加 1,并在结果中再次这样做,直到他这样做十次。如果10变成=,他会在之前的结果等于现在的结果时停止! x (f⍣u) y,在这种情况下,将有 x, f, u 和 y,分别为 1,+∘÷,= 和 1。我认为这种“倒数 + 1”方法是一种经典方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-13
      • 2013-04-23
      • 2015-04-09
      • 2013-07-24
      • 2014-03-26
      相关资源
      最近更新 更多