Getting started with strings in Haskell -
i need write function takes string of gggggggeeeeetttttt , can count how many times letter repeats , output g7e5t6.
i've started haskell not sure @ start.
the function group group identical elements in list. since string list of characters, have:
group "ggggeeetttt" = ["gggg","eee","tttt"] to letter, can use map head, since head takes first element of string (or list):
map head ["gggg","eee","tttt"] = ['g','e','t'] now, want know how many elements there in each substring. can done using map length:
map length ["gggg","eee","tttt"] = [4,3,4] let's turn these numbers strings:
map show [4,3,4] = ["4","3","4"] now need combine original list , length list somehow. can follows:
zipwith (:) ['g','e','t'] ["4","3","4"] zipwith apply specified function paired elements in 2 lists. here i've used (:), adds element start of list.
this gives building blocks need want. example, should work, although haven't tested it:
f s = concat $ zipwith (:) letters lengths groups = group s letters = map head groups lengths = map (show . length) groups
Comments
Post a Comment