首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >这个APL代码是做什么的?

这个APL代码是做什么的?
EN

Stack Overflow用户
提问于 2018-01-20 12:59:06
回答 2查看 327关注 0票数 3

我正在努力学习APL。下面的代码片段来自http://archive.vector.org.uk/art10011550,在这里,这段代码就像读英文“妈妈”一样简单!

代码语言:javascript
复制
R←((V⍳V)=⍳⍴V)/V

我试过从符号那里查,我发现

代码语言:javascript
复制
R is outcome variable
← means gets a value
⍴ means number of components in each dimension of V
⍳ means vector of initial elements

因此,这段代码处理输入变量V并产生输出变量R。然而,我不能搞清楚这段代码到底意味着什么或做了什么?有人能在这里解释一下吗。谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-01-20 13:39:35

该代码等价于R←∪V -获取唯一的元素,在向量中只保留每一项的第一项。

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

在网上试试!

票数 3
EN

Stack Overflow用户

发布于 2018-01-21 00:28:19

((V⍳V)=⍳⍴V)/V上搜索搜索会给您一个独特的结果。从向量中删除副本。虽然您可能并不总是那么幸运,因为变量名称可能有所不同。您也可以尝试在那里搜索一个没有名称的重要部分,例如本例中的)=⍳⍴

这篇文章的作者写了很多扩展版本,即优秀的书“掌握Dyalog APL”。我可以极力推荐。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48356430

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档