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

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

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

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

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)))

Index

Feed

Other

Link

Pathtraq

loading...