我有一个矩阵,其中每个向量都由哈希映射组成。这是一个玩具示例:
[
[{: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循环。我不是在寻找某人为我做的一切,但是在正确的方向上提示会非常感激。谢谢。
答案 0 :(得分:2)
(def m "ABBAAAC")
(->> m (map-indexed vector)
(partition-by #(-> % second identity))
(sort-by count >)
(first))
给出:
([3 \A] [4 \A] [5 \A])