我最近刚开始学习haskell,现在我正在做一些wikibooks的练习。 我做运动与RLE编码,我已经跟解决方案是这样的:Haskell char引号
import Data.List
rle :: String -> [(Int,Char)]
rle [] = []
rle xs = zip lengths chars
where
groups = group xs
lengths = map length groups
chars = map head groups
rle_toString :: [(Int, Char)] -> String
rle_toString [] = []
rle_toString (x:xs) = show (fst x) ++ show (snd x) ++ rle_toString xs`
不是一个非常优雅的解决方案,但它几乎工作。问题是,我得到这样的输出:"7'a'8'b'7'j'6'q'3'i'7'q'1'p'1'a'16'z'2'n'"
。带有字符的单引号不是优雅的。我如何实现如下输出:"7a8b7j6q3i7q1p1a16z2n"
?
有了这个输出,你会如何解码“12345”? – augustss
@augustss:此任务假定输入没有数字。 – mhl
够公平的。顺便说一句,''''''''不需要特殊情况,'zip'也可以用'group'代替'group',特别是使用'Control.Arrow。&&&'。 – augustss