2011-12-09 48 views
1

我正在嘗試編寫haskell函數,該函數使用列表的列表並找到所有高值的最低值。找到所有高值的最低值

所以函數接受列表[[1,1,3],[2,5],[1]]並返回1,因爲它的最低值爲3,5,1。

我可以使用什麼樣的haskell函數?

+0

能否請你定義的「高值」多一點? –

+3

這是功課嗎? –

+0

這不是我要交給我的。我正在爲編程朗讀課程考試做準備。所以我試圖解決儘可能多的問題,並且無法弄清楚。 – krunarsson

回答

5

使用列表理解:

maxi xxs = minimum [ maximum a | a <- xxs] 

(我在哈斯克爾初學者...和編碼這是第一次。我在這裏以防萬一弄明白答案所以,Gratzz給我!:P)

5

包含Data.List模塊有用的功能,

:browse Data.List 
在ghci中

(看起來很像功課,所以......)

3

認爲「一步一步」:首先,你需要找到各列表的所有最大值,如:

map maximum [[1,1,3],[2,5],[1]] 
--[3,5,1] 

然後你需要這個列表的最小值。所以,一個解決辦法是:

minOfMax xs = minimum (map maximum xs) 

當然你也可以寫自己的遞歸解決方案,或使用折:

minOfMax (x:xs) = foldl f (maximum x) xs where 
    f a bs = min a (maximum bs)