問題 10
(初級 🌟) 問題9の結果を使って、いわゆるランレングス符号化(連続する重複要素を (N, E) の形で圧縮する)を実装せよ。
import LeanBook.Problem09
variable {α : Type} [BEq α] [Inhabited α]
def encode (l : List α) : List (Nat × α) :=
pack l |>.map fun x => (x.length, x.head!)
#guard encode [1, 1, 2, 2, 2, 3, 4, 4, 4, 4] == [(2, 1), (3, 2), (1, 3), (4, 4)]
#guard encode ['a', 'a', 'b', 'c', 'c'] == [(2, 'a'), (1, 'b'), (2, 'c')]
#guard encode [1, 1] == [(2, 1)]