Een zeer eenvoudige manier om strings te comprimeren bestaat eruit om herhaalde karakters voor te stellen door koppels van het aantal herhalingen en het karakter zelf. Enkel opeenvolgende gelijke karakters worden samengenomen.
In deze opgave schrijven we de functies encode en decode. decode maakt de
compressie van encode weer ongedaan.
flatten en pack kan je hier zeker goed
gebruiken.encode :: String -> [(Int, Char)]
encode "aabbccddeeffabcd" == [(2,'a'),(2,'b'),(2,'c'),(2,'d'),(2,'e'),(2,'f'),(1,'a'),(1,'b'),(1,'c'),(1,'d')]
encode "aabaa" == [(2,'a'),(1,'b'),(2,'a')]
encode "" == []
decode :: [(Int, Char)] -> String
decode [(2,'a'),(1,'b')] == "aab"
decode (encode "aabbcccddd") == "aabbcccddd"