Как я могу сделать здесь фильтр (x:xs) = (x, length (x:xs))
, который ставит длину, когда длина> 1?Фильтр по длине
В настоящее время, если входной номер abcaaabbb
Выход [('a',1),('b',1),('c',1),('a',3),('b',3)]
, но я ищу abca3b3
.
Мой код:
import Data.List
encode :: [Char] -> [(Char, Int)]
encode s = map go (group s)
where go (x:xs) = (x, length (x:xs))
main = do
s <- getLine
print (encode s)
Последняя строка будет putStrLn (concat (map (\(x,y) -> x : [y]) (encode s)))
для списка Преобразовать в строку.
Значение '' '' не имеет значения Char. Таким образом, вам, по крайней мере, понадобится '[('a', '0'), ('b', '2')]' или '[('a', 0), ('b', 2)]' – tokosh
@tokosh спасибо, обновленный вопрос. – rel1x