重複する要素を取り除く
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;
|



にしお
#3412()
Rating1/1=1.00
これはアレイのuniqの派生問題です。 リストとかアレイという言葉は言語によってまちまちの意味で使われているので、 「配列のようなもの」という漠然とした意味にとって構いません。
[ reply ]