scalaで8-queen
とりあえずやってみた。
-
付与されたタグ:
- Scala
object EQ { def main(args : Array[String]) : Unit = { print ("start\n") for (l <-queens(8)){ print(l + "\n") } print("end") } def queens(n: Int): List[List[Int]]= n match { case 0 => List(List()): List[List[Int]] case n :Int => for ( b <- queens(n-1); q <- List.range(0,8); if safe(q,b)) yield (q::b) } def safe(q:Int, b: List[Int]) : Boolean = { List.range(0, b.length) forall (i => ! check(q,b,i)) } def check(q : Int, b: List[Int], i:Int) : Boolean = { q == b(i) || (q - b(i)).abs == i + 1 } }
こんな感じ。