< 99 Elm Problems
Write a function to run length encode a list, but instead of using a tuple as in problem 10, define a data type that can represent either a single element or a run of multiple identical element.
import Html exposing (text)
import List
type Item a
= Single a
| Multiple Int a
runLengthEncode : List a -> List (Item a)
-- your implementation goes here
main = text <| toString <|
runLengthEncode ['a', 'a', 'a', 'b', 'c', 'c', 'd', 'e', 'e', 'e', 'e', 'e']
Result:
[Multiple 3 'a', Single 'b', Multiple 2 'c', Single 'd', Multiple 5 'e']
This article is issued from Wikibooks. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.