Problem 10 Solution
Solution 1
- Use
List.map
to convert from List (Int, a)
to List (Int, Maybe a)
.
- Use
removeNothings
to convert to List (Int, a)
.
import List exposing (map, length, head)
runLengths : List (List a) -> List ( Int, a )
runLengths xss =
map (\xs -> ( length xs, head xs )) xss |> removeNothings
removeNothings : List ( Int, Maybe a ) -> List ( Int, a )
removeNothings xs =
case xs of
[] ->
[]
( len, Nothing ) :: rest ->
removeNothings rest
( len, Just y ) :: rest ->
( len, y ) :: removeNothings rest
Back to Problem 10