我有一个矩阵,其中每个矢量由hashmaps组成。这里有一个玩具的例子:如何获得符合标准的矩阵中最长的连续序列?
[
[{:label x, ...}, {:label y, ...}, ...]
[{:label y, ...}, {:label z, ...}, ...]
[{:label p, ...}, {:label x, ...}, ...]
...
[{:label x, ...}, {:label x, ...}, ...]
]
因为只有标签与我的问题有关,所以我删除了其他东西。
现在,我想要做的是为每一行计算连续标签的最长序列。也就是说,如果一行的标签是A B B B A A C A
,那么最长的序列是B B B
。然后我想返回的是一个元组1)哪一行的最长序列号是k
(如果是平局,最长的任何一个都可以),还有2)序列中第一项的索引i
是什么,以及3)序列中最后一项的索引j
是什么。
因此,对于这个简化的矩阵,那将是k = 1, i = 2, j = 5
。
[
[A B B A A C]
[C B A A A A]
[B A C A B A]
]
我是功能编程的新手,我真的很喜欢它,但我不知道如何做到这一点,而不诉诸于例如。我的本地php的foreach循环。我不想找人为我做任何事情,但向正确的方向提示将非常感激。谢谢。
也许'(分区的身份。)'将有助于https://clojuredocs.org/clojure.core/partition-by – ymonad 2014-11-05 03:13:48
哦,听起来像, 谢谢!我现在要去睡觉,但我一定会在早上仔细看看。 – 2014-11-05 03:17:13