相关疑难解决方法(0)

如何使用Haskell对列表中的类似项进行分组?

给出一个像这样的元组列表:

dic = [(1,"aa"),(1,"cc"),(2,"aa"),(3,"ff"),(3,"gg"),(1,"bb")]
Run Code Online (Sandbox Code Playgroud)

如何对列表grpdic项进行分组,其中,

grp  = [(1,["aa","bb","cc"]), (2, ["aa"]), (3, ["ff","gg"])]
Run Code Online (Sandbox Code Playgroud)

我实际上是Haskell的新手......并且似乎爱上了它.在Data.List中
使用groupgroupBy只会对列表中相似的相邻项进行分组.我为此编写了一个低效的函数,但由于我需要处理一个非常大的编码字符串列表,因此会导致内存故障.希望你能帮我找到更有效的方法.

haskell

22
推荐指数
3
解决办法
1万
查看次数

Haskell中的运行长度编码

import Data.List

data Encoding = Multiple Int Char | Single Char deriving (Eq,Show,Ord)
Run Code Online (Sandbox Code Playgroud)

运行长度的编码

encode :: String -> [Encoding]
encode inputString =encoding (group inputString) []


encoding :: [String] -> [Encoding] -> [Encoding]
encoding groupString xs=
if (length groupString == 0)
    then xs
else
    case (head groupString) of
            ([c]) ->encoding (tail groupString)  (xs ++ [Single c])
            (x) -> encoding (tail groupString)  (xs ++ [Multiple (length x) (head x)])
Run Code Online (Sandbox Code Playgroud)

运行长度的解码

decode :: [Encoding] -> String
decode listString = decoding listString []              

decoding …
Run Code Online (Sandbox Code Playgroud)

haskell

3
推荐指数
1
解决办法
789
查看次数

标签 统计

haskell ×2