重複する要素を取り除く
Posted feedbacks - Scala
ふつうに。
1 2 3 4 5 6 7 8 | import scala.collection.mutable.HashMap
def uniqOnly[A](a:Seq[A]) = {
val map = a.foldLeft(new HashMap[A,int]){(r,v)=>r(v)=r.getOrElse(v,0)+1;r}
a.filter(map(_)==1)
}
println(uniqOnly(Array(3, 1, 4, 1, 5, 9, 2, 6, 5)))
|
そこでScalaですよ。
同じやり方で書いてみました。
1 2 3 4 | def uniqOnly[A](xs:List[A]) =
for(x::Nil <- (for(y<-xs) yield (for(z<-xs if z==y) yield z))) yield x
println(uniqOnly(List(3, 1, 4, 1, 5, 9, 2, 6, 5)))
|





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