((1&{~+/)*./\(=1&{))1 1 1 3 2 4 1
我总是得到索引错误。
重点是输出两个数字,一个与列表中的第一个数字相同,第二个与该数字重复的次数相同。
所以这一点是有效的:
*./\(=1&{)1 1 1 3 2 4 1
1 1 1 0 0 0 0
我将第一个数字与列表中的其余数字进行比较。然后我插入一个and压缩-,这给了我一个1,只要我有一个完整的1字符串,一旦它打破了and,失败了,零就出现了。
我想我可以添加另一组括号,再次从列表中获取lead元素,并以某种方式记录这些数字,最终的想法是有另一个阶段,在那里我将向量的逆应用于原始列表,然后使用$:返回到相同动词的递归应用程序。有点像快速排序的例子,我以为我已经理解了,但我想我不明白。
但我甚至都不能靠近。我将把这个作为一个单独的问题来问,以便人们在回答时获得适当的信任。
发布于 2012-07-03 06:51:33
你是在找这样的东西吗?
f=.{.,+/@:({. E. ])
NB.f 1 1 1 3 2 4 1
NB.1 4
发布于 2011-09-16 05:25:33
J的索引为0,因此您可以尝试执行以下操作:
((0&{~+/)*./\(=0&{))1 1 1 3 2 4 1
发布于 2011-10-01 13:53:23
(0&{ , +/@(*./\)@(= 0&{)) 1 1 1 3 2 4 1
1 3
从你的问题看,我不太确定这是否是你最初想要的结果?
这可能是获得第一个元素重复次数的一种更简单的方法。
=/\ 1 1 1 3 2 4 1
1 1 1 0 0 0 0
我的印象是,你想要得到类似于下面的东西?(它给出了列表中连续重复的次数)
([: #/.~ 0 , [: +/\ 2 ~:/\ ]) 1 1 1 3 2 2 4 1
3 1 2 1 1
https://stackoverflow.com/questions/7437488
复制相似问题