2012-03-23 87 views
0

我得到了一個具有名稱和權重的人類數據類型,如下所示。Haskell數據類型篩選器子列表的列表

data Person = Person 
    {pName :: String, 
    pWeight :: Double} deriving (Show) 

persons :: [Person] 
persons = [Person "Peter" 35.0, 
      Person "Joe" 45.0, 
      Person "Alex" 55.0, 
      Person "Ruby" 60.0, 
      Person "John" 65.0, 
      Person "Ann" 35.0] 

Q1如果我要篩選並獲得第一子從給定的人設置列出其最大的權重之和小於給定值怎麼辦呢?

如輸出,如果最大重量爲150.0

人 「彼得」 35.0

人 「喬」 45.0

人 「亞歷克斯」 55.0

總重量:135.0

Q2如果我想獲得設定的最大重量的所有子集

如輸出,如果最大重量是100.0

集1

人 「彼得」 35.0 人 「喬」 45.0

總重量:80.0

集2

人「Alex」55.0

總重量:55.0

集3 ......等等

+0

這是你的作業嗎? – jberryman 2012-03-23 00:56:42

+0

@jberryman還不完全是我自己學習Haskell。我完全依靠自己的作業爲我的作業做了一個python揹包解決方案,並試圖用Haskell來學習它。我只是這裏的初學者。 – 2012-03-23 09:37:47

+0

@leftaroundabout以及我看到其他例子,如使用過濾器選項,但不知道如何使用它們,這就是爲什麼我提出了這樣的問題 – 2012-03-23 09:37:53

回答

2

第一個可以使用過濾器來完成。第二個看起來像揹包問題。在這種情況下,您可以搜索解決它的策略。如果您在編寫代碼後遇到任何問題,請在此重新發帖,社區將很樂意提供幫助。