gpt4 book ai didi

algorithm - 如何检查 Bool 值列表是否包含相同的值?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:06:10 26 4
gpt4 key购买 nike

我想写一个像这样的函数:

sameBool :: [Bool] -> Bool

例如:

[True, False, True] => False
[True, True] => True

这是我的解决方案:

sameBool :: [Bool] -> Bool
sameBool xs = if head xs == True
then length (filter (== False) xs) == 0
else length (filter (== True) xs) == 0

虽然不优雅但有效。我正在寻找一些更优雅的解决方案。

最佳答案

all :

sameBool :: [Bool] -> Bool
sameBool xs = all (== head xs) xs

nub来自 Data.List:

import Data.List

sameBool :: [Bool] -> Bool
sameBool = (== 1) . length . nub

实际上,它们适用于 Eq 的任何实例:

sameBool :: Eq a => [a] -> Bool
sameBool xs = all (== head xs) xs
-- Note: return True for []

sameBool :: Eq a => [a] -> Bool
sameBool = (== 1) . length . nub
-- Note: return False for []

检查 nubBy对于不是 Eq 实例的类型。

关于algorithm - 如何检查 Bool 值列表是否包含相同的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40818480/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com