根据Rosetta Code,在APL中创建单一矩阵有两种惯用方法:
1. ID?{?.=/?¨ ? ?}
2. ID?{? ? ? 1, ??0}
Run Code Online (Sandbox Code Playgroud)
(2)如何工作?为什么这比使用在APL中被认为是惯用方法的外部产品的(1)更好?
1,??0创建一个由1后跟?零组成的向量.所以,这个向量的长度是?+1.
? ? ?占地面积?-by- ?矩阵.矢量的副本将从左到右和从上到下适合.第一个副本将覆盖整个第一行并溢出到第二行,例如?=5:
1 0 0 0 0
0 . . . .
. . . . .
. . . . .
. . . . .
Run Code Online (Sandbox Code Playgroud)
现在,第二个副本将在第二行进行一点缩进:
. . . . .
. 1 0 0 0
0 0 . . .
. . . . .
. . . . .
Run Code Online (Sandbox Code Playgroud)
等等,直到我们覆盖所有矩阵.它不一定是精确的封面,最后一个副本可能会被切断.如果你进一步想象这个过程,你可以看到1-s将落在主对角线上.
我不知道为什么这应该比使用外部产品的方法更好.要么好看.