我有一个文本表,定义为字符串列表的列表:
type Field = String
type Row = [Field]
type Table = [Row]
我想创建一个函数,可以找到每列最长单词的宽度,如下所示:
columnWidths :: Table -> [Int]
因此,如果有人输入这样的文本表:
["asd", "ffdd"," 12345"]
["dd ss aa","123", "1dssd"]
它应该返回宽度:
[8,4,5]
我尝试了一些东西,包括 map 、最大长度和转置,但我似乎无法使其工作。
最佳答案
所以我这样做了:
- 使用
映射长度
查找表格中每个文本项的长度,但我将其映射到整个表格,因此映射(映射长度)
- 我对其进行了转置,以便可以找到每列中的最大值
- 将其映射到整个表格:
Prelude> import Data.List
Prelude Data.List> let table = [["asd","ffdd","12345"],["dd ss aa","123","1dssd"]]
Prelude Data.List> let lengths = map (map length) table
Prelude Data.List> map maximum $ transpose lengths
[8,4,5]
关于string - 在 Haskell 中查找文本表中一列中最长的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32583480/