在列表按两个分组后,我需要在列表中找到匹配元素对。
即。 1 1 2 3 2 2
将返回1 1 2 2
,但1 2 2 1
将不会返回任何内容,因为这两个框将位于不同的框中。
我的想法是创建盒子,然后应用蒙版来获得匹配对,但我无法弄清楚成对拳击步骤。我怎么做成对拳击?
(我的问题的另一个解决方案也很有趣,但我对成对拳击解决方案感兴趣)
答案 0 :(得分:2)
通常,在处理可变大小列表的情况下,最好使用方框。如果不是这种情况,最好避免它们提高性能(提高速度和减少空间)。此版本不使用框:
_2 ,@(]\ #~ =/\) 1 1 3 4 2 2
1 1 2 2
_2 ,@(]\ #~ =/\) 1 2 2 1
答案 1 :(得分:1)
这应该有效。
_2 ]\ 1 2 2 1
1 2
2 1
它基于称为Infix的二元游戏。有关此链接的更多信息,请访问:http://www.jsoftware.com/help/dictionary/d430.htm
要设置框,只需将副词\
应用到动词<
_2 <\ 1 2 4 5 4 6 2 1
+---+---+---+---+
|1 2|4 5|4 6|2 1|
+---+---+---+---+
答案 2 :(得分:1)
根据Bob的回答,您可以在Infix (\
) adverb上对值对应用条件谓词:
_2 =/\ 1 1 2 3 2 2
1 0 1
应用此条件并以盒装结果结束的简单方法如下,假设您需要将结果装箱(在此简单示例中您不会这样做):
((_2 =/\ ]) # _2 <\ ]) 1 2 2 1
((_2 =/\ ]) # _2 <\ ]) 1 1 2 3 2 2
┌───┬───┐
│1 1│2 2│
└───┴───┘
如果不清楚,上面用括号(_2 =/\ ])
计算条件。 fork规则应用_2 <\ ]
来装箱对,然后选择与条件结果匹配的方框和f # g
分叉。