challenge 重複する要素を取り除く

与えられたリストxsの中から、 2回以上出現するものを全部取り除いてください。

サンプル入力
[3, 1, 4, 1, 5, 9, 2, 6, 5]
サンプル出力
[3, 4, 9, 2, 6]

これはアレイのuniqの派生問題です。 リストとかアレイという言葉は言語によってまちまちの意味で使われているので、 「配列のようなもの」という漠然とした意味にとって構いません。

Posted feedbacks - xtal

配列の要素を [その要素、*残りの要素] に map して
「残りの要素」に「その要素」が含まれていなければ yield します。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
Iterator::skip: method(n) {
    n.times { this { break; } }
}
Iterator::window: method(start, length) {
    this.skip(start);
    return this.take(length);
}

only_uniq: fun(arr) fiber {
    len: arr.length;
    iters: range(0, len).map(|i| arr.cycle.window(i, len).to_a);
    iters {|it,rest|
        if (rest.select(|e| e == it).to_a.empty) {
            yield it;
        }
    }
}

only_uniq([3, 1, 4, 1, 5, 9, 2, 6, 5]).to_a.p;

Index

Feed

Other

Link

Pathtraq

loading...