有一個布爾表的列表,如果列表包含奇數個True分量,我需要返回True。但我不知道從哪裏開始。任何幫助將不勝感激。如何計算Haskell中的布爾值而不使用count?
回答
基本上,你想要的功能,看起來像這樣:
f x True = not x
f x False = x
該函數使用第一個參數作爲一個「國家」,如果第二個參數是True
然後翻轉x
,如果第二個參數是False
那麼不要對x
做任何事情。然後,您可以使用foldl
(或Data.List.foldl'
獲得更好的性能)來確定的True
S IN列表中的數是奇數:
hasOddTrues :: [Bool] -> Bool
hasOddTrues bs = foldl f False bs
此代碼等同於Python代碼
def f(x, y):
if y: return not x
else: return x
def hasOddTrues(bs):
isOdd = False
for b in bs:
isOdd = f(isOdd, b)
return isOdd
在
fold
概括了迭代項目集合的概念,其中狀態在每次迭代時都會發生變化,具體取決於前一個值和當前元素。
不是你的'f'函數只是'(/ =):: Bool - > Bool - > Bool'?我認爲如果你把它看作是列表中的N個項目(因爲Bools,xor與/ =相同),它會更清晰。 – amalloy 2014-10-22 03:44:52
爲什麼不寫'奇怪的。長度 。過濾器(== True)'?它更具可讀性。另外由於[流融合](http://www.reddit.com/r/haskell/comments/1br0ls/haskell_beats_c_using_generalised_stream_fusion/),它將非常有效地運行。 – 2014-10-22 04:57:15
- 1. 如何使用Count()而不計算SQLITE中不同行中的重複值?
- 2. 布爾值計算
- 3. 使用COUNT計算()
- 4. 增值稅計算器布爾值
- 5. 如何計算兩個數據框中兩列的布爾值?
- 6. 用錯誤計算多列中的值布爾值
- 7. 使用Ruby on Rails從布爾值計算平均值
- 8. 使用SQL COUNT創建計算列COUNT
- 9. MySQL的SELECT COUNT> 0的布爾值
- 10. 如何比較Max(Count(*))值而不使用MS SQL中的SubQuery?
- 11. 結構指令,我可以得到屬性值,而不是計算布爾值
- 12. Doctrine2 ODM COUNT()不計整數值使用Zendframework2和使用count函數計算值的數量
- 13. elasticsearch布爾查詢如何計算
- 14. 在rails下計算布爾值
- 15. Knockout計算可觀察布爾值,使用ajax調用不返回布爾值在成功
- 16. 什麼時候應該使用布爾值而不是布爾值?
- 17. 如何在SQL中使用布爾值
- 18. COUNT(*)0布爾場
- 19. 計算N-Ary(帶不同類型!!)Haskell中的笛卡爾積
- 20. 如何使用BeanUtils copyProperties從布爾值複製到布爾值?
- 21. 如何計算mysql中count列中值的總和?
- 22. 使用timedelta和布爾值計算時間範圍
- 23. 如何在Haskell中返回一個布爾值
- 24. 如何使用COUNT計算兩列中出現的次數?
- 25. 用於布爾計算的Lex/Yacc
- 26. 計數布爾運算符
- 27. 如何計算行用SELECT COUNT(*)
- 28. 布爾值,而不是通過Symfony的
- 29. 如何在Haskell中使用hmatrix來計算矩陣的梯度?
- 30. 如何在Kotlin中使用GROUP BY計算COUNT(*)?
你嘗試過奇怪嗎?長度 。過濾器(== True)$ list'其中'list'是您的布爾值列表? – 2014-10-22 03:23:41
最後我做這種方式 XOR = \ BS - >如果MOD(長度(過濾器(==真)BS))2 == 0則假否則真 感謝您的幫助 – Huskey27 2014-10-22 04:00:57
'奇怪。總和。來自Enum的地圖 – user2407038 2014-10-22 04:31:13