Как работает этот код золотого сечения APL? - PullRequest
0 голосов
/ 01 сентября 2018

Это код для золотого сечения в Dyalog APL:

1+∘÷⍣=1

Я не понимаю. «1 плюс повторение записи равняется 1» не имеет никакого смысла.

Ответы [ 3 ]

0 голосов
/ 01 сентября 2018

+ ∘ ÷

Обратная величина применяется монадически к правому операнду, а результат добавляется к левому операнду. 10+∘÷4 → 10.25 и 1+∘÷1 → 2.

⍣number

Когда мы повторяем двоичную функцию, правый операнд «обновляется», но левый операнд остается прежним. 1+∘÷⍣2⊢1 → 1+∘÷2 → 1.5

⍣function

Повторять снова и снова, пока (текущий результат) f (предыдущий результат) равен false. Таким образом, ⍣= повторяется до схождения, как будто «∞ раз».

0 голосов
/ 01 сентября 2018

Теперь я понял, благодаря вам! Позвольте мне подвести итог! x + ∘ ÷ y - составная функция. Сначала вы вычисляете 1 / y, затем оно составляется с добавлением, а x добавляется. Теперь, вот куда приходит наш повторяющийся парень с кислыми конфетами (он все время морщится)! Тест: 1 (+ ⍣10) 1. Он начинает с 1, добавляет 1 и делает это снова с результатом, пока он не сделает это десять раз. Если 10 становится =, он остановится, когда предыдущий результат будет равен текущему результату! x (f⍣u) y, в этом случае, будет иметь x, f, u и y, равные 1, + ∘ ÷, = и 1. Этот метод «взаимных + 1», я думаю, является классическим.

0 голосов
/ 01 сентября 2018

Операндами являются +∘÷ (слева) и = (справа). Оба аргумента 1.

с правым операндом функции - "до", который повторяет левый операнд до тех пор, пока правый операнд, вызванный с двумя последними результатами, не даст 1. Итак, здесь ⍣= означает «повторять до тех пор, пока не получится» - найдите фиксированную точку.

вызывает свой левый операнд с тем же левым аргументом, что и левый аргумент (так всегда 1), но циклически изменяет правый с новыми результатами.
Итак, +∘÷ называется двоично, что совпадает с dfn {⍺ + ÷⍵}. здесь всегда один и тот же 1, потому что это левый аргумент .

В целом, этот код делает 1 + ÷last, пока последний результат и этот не будут равны. Попробуйте онлайн!

Dyalog APLs ]box on -trains=tree:

  ⍣ 
 ┌┴┐
 ∘ =
┌┴┐ 
+ ÷ 
...