連長圧縮

GitHub last commit

概要

配列 $A$ を連長圧縮した配列を返す.

制約

実装

// 👇👇👇👇👇👇👇👇👇👇👇👇 util/encoded 👇👇👇👇👇👇👇👇👇👇👇👇
trait Encoded<T> {
    fn encoded(&self) -> Vec<(T, usize)>;
}

impl<T: Clone + Eq> Encoded<T> for Vec<T> {
    fn encoded(&self) -> Vec<(T, usize)> {
        let mut z = self.iter().map(|a| (a.clone(), 1)).collect::<Vec<_>>();
        z.dedup_by(|a, b| (a.0 == b.0).then(|| b.1 += a.1).is_some());
        z
    }
}
// 👆👆👆👆👆👆👆👆👆👆👆👆 util/encoded 👆👆👆👆👆👆👆👆👆👆👆👆

Verified with

戻る