나는 최근에 실제로 haskell을 배우기 시작했고, 나는 wikibooks에서 몇 가지 연습을하고있다. 나는 RLE 인코딩 운동을하고있어, 나는 다음과 같은 솔루션을 제공했습니다하스켈 숯불 따옴표
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
충분합니다. BTW, 당신은'[]'에 특별한 경우가 필요하지 않으며,'zip'은 특히'Control.Arrow. &&& '를 사용하여'group'에 대한'map'으로 대체 될 수 있습니다. – augustss