Guest User

Untitled

a guest
Apr 21st, 2018
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.63 KB | None | 0 0
  1. object Queens {
  2.  
  3. def queens(n: Int): List[List[(Int,Int)]] = {
  4. def placeQueens(k: Int): List[List[(Int,Int)]] = {
  5. if (k == 0) List(List())
  6. else
  7. for { queens <- placeQueens(k - 1)
  8. column <- 1 to n
  9. queen = (k, column)
  10. if isSafe(queen, queens)
  11. } yield queen :: queens
  12. }
  13. placeQueens(n)
  14. }
  15.  
  16. private[this] def isSafe(queen: (Int,Int), queens: List[(Int,Int)]) =
  17. queens forall (q => !isCheck(queen,q))
  18.  
  19. private[this] def isCheck(q1: (Int,Int), q2: (Int,Int)) =
  20. q1._1 == q2._1 || q1._2 == q2._2 || (q1._1 - q2._1).abs == (q1._2 - q2._2).abs
  21.  
  22. }
Add Comment
Please, Sign In to add comment