我最近剛開始學習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