リストに複数回表示される要素を印刷したい。どうすればそれができるか教えてください..私はhaskeleが初めてです。
たとえば、[1,2,3,3,2,4,5,6,5] があり、[2,3,5] のみを取得したい場合、これらはリスト内で繰り返される要素であるためです。
リストに複数回表示される要素を印刷したい。どうすればそれができるか教えてください..私はhaskeleが初めてです。
たとえば、[1,2,3,3,2,4,5,6,5] があり、[2,3,5] のみを取得したい場合、これらはリスト内で繰り返される要素であるためです。
別の解決策: 最初にリストを並べ替えてから、等しい要素をグループ化し、複数回出現する要素のみを取得します。
>>> :m + Data.Maybe Data.List
>>> let xs = [1..100000] ++ [8,18..100] ++ [10,132,235]
>>> let safeSnd = listToMaybe . drop 1
>>> mapMaybe safeSnd $ group $ sort xs
[8,10,18,28,38,48,58,68,78,88,98,132,235]
group $ sort xs
は、各リストがすべて等しい要素を含むリストのリストです。
mapMaybe safe2nd
2 番目の要素を持つリストのみを返します (= 元の要素が元のリストに複数回出現します)。
これはnub
、特に大きなリストの場合、 を使用する方法よりも高速である必要があります。