18 lines
425 B
Scala
18 lines
425 B
Scala
def vecOk(v: IndexedSeq[Int])(f: (Int,Int) => Int): Boolean = {
|
|
def vecOkIter(level: Int)(lst: List[Int]): Boolean = {
|
|
if (level > -1) {
|
|
val d = f(v(level),level)
|
|
if (lst.contains(d)) false
|
|
else vecOkIter(level-1)(d :: lst)
|
|
}
|
|
else true
|
|
}
|
|
vecOkIter(v.length-1)(List[Int]())
|
|
}
|
|
|
|
def nQueen(n: Int) = for (
|
|
v <- (1 to n).permutations
|
|
if vecOk(v)(_+_) && vecOk(v)(_-_)
|
|
) yield v
|
|
|
|
nQueen(8)
|