1 compression haskell run-length-encoding
我正在寻找标准高阶函数的直接组合,通过计算重复元素来压缩列表.例如,结果为
"abbccccb"
将会 :
[(1, 'a'), (2, 'b'), (4, 'c'), (1, 'b')]
Run Code Online (Sandbox Code Playgroud)
另一个例子,结果为
(sort "abrakadabra")
Run Code Online (Sandbox Code Playgroud)
将会:
[(5, 'a'), (2, 'b'), (1, 'd'), (1, 'k'), (2, 'r')]
Run Code Online (Sandbox Code Playgroud)
ham*_*mar 10
从使用开始Data.List.group.这为您提供了相同元素的运行列表,例如
> group "abbccccb"
["a","bb","cccc","b"]
Run Code Online (Sandbox Code Playgroud)
然后,map在这个列表中,走的是head和length每个运行.这可以用优雅的完成&&&操作者Control.Arrow:
> map (length &&& head) . group $ "abbccccb"
[(1,'a'),(2,'b'),(4,'c'),(1,'b')]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1279 次 |
| 最近记录: |