首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当我尝试向这个J程序添加第二个钩子/叉子时,我得到了意想不到的结果。有谁能解释一下原因吗?

当我尝试向这个J程序添加第二个钩子/叉子时,我得到了意想不到的结果。有谁能解释一下原因吗?
EN

Stack Overflow用户
提问于 2011-09-16 05:10:44
回答 4查看 193关注 0票数 3
代码语言:javascript
运行
复制
((1&{~+/)*./\(=1&{))1 1 1 3 2 4 1

我总是得到索引错误。

重点是输出两个数字,一个与列表中的第一个数字相同,第二个与该数字重复的次数相同。

所以这一点是有效的:

代码语言:javascript
运行
复制
*./\(=1&{)1 1 1 3 2 4 1
1 1 1 0 0 0 0

我将第一个数字与列表中的其余数字进行比较。然后我插入一个and压缩-,这给了我一个1,只要我有一个完整的1字符串,一旦它打破了and,失败了,零就出现了。

我想我可以添加另一组括号,再次从列表中获取lead元素,并以某种方式记录这些数字,最终的想法是有另一个阶段,在那里我将向量的逆应用于原始列表,然后使用$:返回到相同动词的递归应用程序。有点像快速排序的例子,我以为我已经理解了,但我想我不明白。

但我甚至都不能靠近。我将把这个作为一个单独的问题来问,以便人们在回答时获得适当的信任。

EN

回答 4

Stack Overflow用户

发布于 2012-07-03 06:51:33

你是在找这样的东西吗?

代码语言:javascript
运行
复制
f=.{.,+/@:({. E. ])

NB.f 1 1 1 3 2 4 1
NB.1 4
票数 2
EN

Stack Overflow用户

发布于 2011-09-16 05:25:33

J的索引为0,因此您可以尝试执行以下操作:

代码语言:javascript
运行
复制
((0&{~+/)*./\(=0&{))1 1 1 3 2 4 1
票数 0
EN

Stack Overflow用户

发布于 2011-10-01 13:53:23

代码语言:javascript
运行
复制
   (0&{ , +/@(*./\)@(= 0&{)) 1 1 1 3 2 4 1
1 3

从你的问题看,我不太确定这是否是你最初想要的结果?

这可能是获得第一个元素重复次数的一种更简单的方法。

代码语言:javascript
运行
复制
   =/\ 1 1 1 3 2 4 1
1 1 1 0 0 0 0

我的印象是,你想要得到类似于下面的东西?(它给出了列表中连续重复的次数)

代码语言:javascript
运行
复制
  ([: #/.~ 0 , [: +/\ 2 ~:/\ ]) 1 1 1 3 2 2 4 1
3 1 2 1 1
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7437488

复制
相关文章

相似问题

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