假设我们有一个列表列表,并且想将所有内部列表切成最短的内部列表的长度-例如,从[[1,2,3,4],[2,3],[3,9]]我们应该得到[[1,2],[2,3],[3,9]]。
到目前为止,这是我的代码(不起作用):
cut :: [[a]] -> [[a]]
cut = map (\xs -> drop ((min(length xs)) - length xs) xs)
Run Code Online (Sandbox Code Playgroud)
我试图这样解决它:必须有一个返回最短列表长度的函数,因此,我们需要另一个函数,该函数将所有列表从头切到新长度。但是,实际上,我没有任何线索。
是你想要的吗?
truncateList :: [[a]] -> [[a]]
truncateList list = map (\x -> take l x) list
where
l = minimum (map length list)
Run Code Online (Sandbox Code Playgroud)
或更短一点
truncateList :: [[a]] -> [[a]]
truncateList list = map (take l) list
where
l = minimum (map length list)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
210 次 |
| 最近记录: |