我正在努力学习APL。以下代码段来自reserved as the start of a fragment identifier,其中声明此代码就像在英语中阅读“MUMMY”一样简单!
author = models.ForeignKey('auth.User',
on_delete=models.DO_NOTHING,)
我试图从base64 encode the inner png image查看,我发现
R←((V⍳V)=⍳⍴V)/V
因此,此代码处理输入变量V并生成输出变量R.但是,我无法弄清楚此代码的确切含义或含义是什么?有人可以在这里解释一下。感谢。
答案 0 :(得分:4)
在miserver.dyalog.com/Examples/Applications/Idiom_Search上搜索((V⍳V)=⍳⍴V)/V
会为您提供:唯一身份。从矢量中删除重复项。虽然你可能并不总是 幸运,因为变量名可能不同。您也可以尝试在那里搜索没有名称的重要部分,例如在这种情况下)=⍳⍴
。
该文章的作者撰写了大量扩展版本,即优秀的书Mastering Dyalog APL。我强烈推荐它。
答案 1 :(得分:3)
该代码相当于R←∪V
- 获取唯一元素,只留下向量中每个项目的第1个。
V⍳V
为向量V中的每个元素获取同一向量中该项的第一个索引。因此,对于第一次出现的元素,它将等于向量中的索引。对于V←1 2 2 4 2 5
,结果为1 2 2 4 2 6
⍳⍴V
返回一系列数字1..length(V)。对于与上述相同的V,结果为1 2 3 4 5 6
。
=
检查两者之间的元素相等 - 它为每个元素找到它是否出现在向量之前。对于我的示例,这将返回1 1 0 1 0 1
。
然后/V
过滤初始向量,只留下上面向量中与1
对应的项目。结果为1 2 4 5
。
我将该表达式读作Items of the vector V where the first appearance of the item equals it's index
。