Мне тоже нравятся символы APL, а также его мощность программирования в массиве. Другие языки массива могут быть более мощными, например J, но им не хватает красоты символов APL и явного синтаксиса.
Я просто попытался пример вы ссылку в GNU APL и работает все в порядке:
↑0 1↓↑+.×/5/⊂2 2⍴1 1 1 0
5
↑0 1↓↑+.×/6/⊂2 2⍴1 1 1 0
8
↑0 1↓↑+.×/7/⊂2 2⍴1 1 1 0
13
Если вы не можете заставить его работать, убедитесь, что:
- типа (или скопировать и вставить) точные символы, показанные в примере: в частности
×
- U + 00D7 MULTIPLICATION SIGN, а не X; ⍴
U + 2374 APL FUNCTIONAL SYMBOL RHO, а не любой другой греческий Rho, и определенно не P; ⊂
U + 2282 SUBSET OF; и так далее;
- проверять некоторые цифры, отличные от 1 или 5, потому что они являются единственными числами, которые равны их числу Фибоначчи;
- Если вы не ставите фактическое число вместо N, убедитесь, что вы правильно определили N, например
N←7
в предыдущей строке.
Если вы все еще не можете заставить его работать, введите формулу один шаг в то время, начиная с правой стороны:
2 2⍴1 1 1 0
1 1
1 0
⊂2 2⍴1 1 1 0
1 1
1 0
7/⊂2 2⍴1 1 1 0
1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 0 1 0 1 0 1 0 1 0 1 0 1 0
+.×/7/⊂2 2⍴1 1 1 0
21 13
13 8
↑+.×/7/⊂2 2⍴1 1 1 0
21 13
13 8
0 1↓↑+.×/7/⊂2 2⍴1 1 1 0
13
8
↑0 1↓↑+.×/7/⊂2 2⍴1 1 1 0
13
Что касается названия вопроса, я думаю, что эта матрица формула ногти он (! браво @mappo)
Если бы я был golfing, я бы, вероятно, использовать более короткий вариант, но это все:
2⌷∊+.×/7/⊂∘.∨⍨1 0
13
Там, сюда м от 24 до 17 символов. Посмотрите, можете ли вы это выяснить :-)
GNU APL в порядке, хотя ему не хватает некоторых современных функций, но сохраните копию руководства Dyalog APL Programmer's Guide & Язык Ссылка удобна, поскольку это одна из самых полных ссылок на язык.
Почему это не работает на GNU-APL? Какие ошибки вы получаете? – bman
@Baqer Mamouri - ↑ 0 1 ↓ ↑ + /. ×/N⊂2 2⍴1 1 1 0 где N равно 10 возвращает «1» –
↑ 0 1 ↓ ↑ +. ×/N/⊂2 2⍴1 1 1 0 дает мне N-е число фибоначчи в Dyalog APL (с [] ML 3). Я могу «оживить» эту строку кода, сделав ее Dfn, т. Е. {↑ 0 1 ↓ ↑ +. ×/⍵/⊂2 2⍴1 1 1 0} ¨⍳20. Обратите внимание, что это работает в [] IO 1. Каждый оператор эффективно выполняет итерацию выражения над 1, 2, ... 20. – Lobachevsky