Set
Set
is the subclass of Iterable
.
val fruits = Set("apple", "banana")
val s = (1 until 6).toSet
s.map(_ + 2)
fruits.filter(_.startWith("app"))
-
Set
is unordered. -
Set
's elements are unique. -
contains
function is very useful inSet
s.contains(1) // true
Exercise
def meetQueen(col: Int, intercept: Int, queens: List[Int]): Boolean = queens match {
case Nil => false
case q :: others => {
q == col || (q - col).abs == intercept || meetQueen(col, intercept + 1, others)
}
}
def queens(n: Int) = {
def playQueens(k: Int): Set[List[Int]] = {
if (k == 0) Set(List())
else {
for (
queens <- playQueens(k - 1);
col <- 0 until n
if !meetQueen(col, 1, queens)
) yield col :: queens
}
}
playQueens(n)
}