首页 > 解决方案 > 检查列表列表是否具有两个或多个相同的元素

问题描述

我需要编写一个函数来检查列表是否有两个或多个相同的元素并返回真或假。

例如[3,3,6,1]应该返回true,但[3,8]应该返回false。

这是我的代码:

identical :: [Int] -> Bool
identical x = (\n-> filter (>= 2) n )( group x )

我知道这很糟糕,而且它不起作用。我想将列表分组为列表列表,如果列表的长度> = 2,那么它应该返回 true,否则返回 false。

标签: listhaskellfilter

解决方案


用于any获得 Bool 结果。

any ( . . . ) ( group x )

不要忘记对列表进行排序,group对连续元素起作用。

any ( . . . ) ( group ( sort x ) )

您可以将 (not . null . tail) 用于谓词,作为选项之一。


推荐阅读