Как написать NNN .... N, используя операторы (или другие вещи)? - PullRequest
3 голосов
/ 14 октября 2011

Хорошо .. Я начал изучать APL со вчерашнего дня.Я смотрю видео на YouTube, рассказывающие о различных символах из базовых, и я использую NARS2000.

Я хочу напечатать последовательность Фибоначчи.Я знаю, что есть несколько кодов, но так как я не изучал сложные вещи, я начал писать свой собственный код.

Сначала я создал этот массив: APL code: N{leftarrow}2{space}2{rho}1{space}1{space}1{space}0

Идея проста:элемент в (1,1) в Nⁿ является (n + 1) -й последовательностью Фибоначчи.

То, что я сделал, было:

+.{times}\N{space}N{space}N{space}N{space}N

и

{uparrow}{dieresis}(+.{times}\N{space}N{space}N{space}N{space}N)

Ну, это работает.Однако, если я хочу 16-й срок, тогда я должен сделать

Same as above, but here's a lot of Ns

Мне нужно написать произвольное количество Ns.Конечно, я знаю о {rho}.Тем не менее,

I used rho but this is not what I wanted.

(нижняя часть была обрезана)

И я заметил, что (i 2 2) {rho} N и i Ns разные.

rho and multiple Ns

Каким оператором мне следует воспользоваться, чтобы сделать то же самое, что и NN N ... N?

Ответы [ 2 ]

3 голосов
/ 12 декабря 2011

Вы были почти там. («изменить форму») - правильный оператор для использования;однако вы хотите, чтобы ваша матрица N рассматривалась не как матрица, а как отдельный скалярный элемент.Для этого вы оборачиваете его с помощью оператора " enclace " :

      4⍴⊂N
  1 1    1 1    1 1    1 1 
  1 0    1 0    1 0    1 0

Если мы завернем это, мы получимследующее выражение:

      ↑¨+.×\16⍴⊂2 2⍴1 1 1 0
1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597

(позвольте мне сделать одно замечание: по определению последовательность Фибоначчи начинается с 0 и 1.)

0 голосов
/ 30 апреля 2013

Если вы хотите начать с 0 и 1, просто используйте 0 1 1 1 вместо 1 1 1 0

      ↑¨+.×\16⍴⊂2 2⍴0 1 1 1
0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610
...