跳到内容

99 道 Elm 难题/问题 11

来自维基教科书,一个面向开放世界的开放书籍

编写一个函数以运行长度对列表进行编码,但不用像问题 10 中使用元组一样,而要定义一个数据类型,它可以表示单个元素或多个相同元素的运行。

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']

结果

[Multiple 3 'a', Single 'b', Multiple 2 'c', Single 'd', Multiple 5 'e']

解决方案

华夏公益教科书