SSブログ

R: 8 Queensを解く

Rで、8 Queensを解かせてみた。library(gtools)permutations()を使用。あまりエレガントではない。


library(gtools)

n <- 8

q <- permutations(n, n)
a <- vector("list")

n.a <- 0
for (i in 1:nrow(q)) {
  col <- FALSE
  for (j in 1:(n - 1)) {
    for (k in (j + 1):n) {
      dx <- abs(j - k)
      dy <- abs(q[i, j] - q[i, k])
      if (dx == dy) {
        col <- TRUE
        break
      }
      if (col) break
    }
    if (col) break
  }
  if (!col) {
    n.a <- n.a + 1
    a[[n.a]] <- q[i,]
  }
}


結果
> a
[[1]]
[1] 1 5 8 6 3 7 2 4

[[2]]
[1] 1 6 8 3 7 4 2 5

[[3]]
[1] 1 7 4 6 8 2 5 3

[[4]]
[1] 1 7 5 8 2 4 6 3

[[5]]
[1] 2 4 6 8 3 1 7 5

[[6]]
[1] 2 5 7 1 3 8 6 4

[[7]]
[1] 2 5 7 4 1 8 6 3

[[8]]
[1] 2 6 1 7 4 8 3 5

[[9]]
[1] 2 6 8 3 1 4 7 5

[[10]]
[1] 2 7 3 6 8 5 1 4

[[11]]
[1] 2 7 5 8 1 4 6 3

[[12]]
[1] 2 8 6 1 3 5 7 4

[[13]]
[1] 3 1 7 5 8 2 4 6

[[14]]
[1] 3 5 2 8 1 7 4 6

[[15]]
[1] 3 5 2 8 6 4 7 1

[[16]]
[1] 3 5 7 1 4 2 8 6

[[17]]
[1] 3 5 8 4 1 7 2 6

[[18]]
[1] 3 6 2 5 8 1 7 4

[[19]]
[1] 3 6 2 7 1 4 8 5

[[20]]
[1] 3 6 2 7 5 1 8 4

[[21]]
[1] 3 6 4 1 8 5 7 2

[[22]]
[1] 3 6 4 2 8 5 7 1

[[23]]
[1] 3 6 8 1 4 7 5 2

[[24]]
[1] 3 6 8 1 5 7 2 4

[[25]]
[1] 3 6 8 2 4 1 7 5

[[26]]
[1] 3 7 2 8 5 1 4 6

[[27]]
[1] 3 7 2 8 6 4 1 5

[[28]]
[1] 3 8 4 7 1 6 2 5

[[29]]
[1] 4 1 5 8 2 7 3 6

[[30]]
[1] 4 1 5 8 6 3 7 2

[[31]]
[1] 4 2 5 8 6 1 3 7

[[32]]
[1] 4 2 7 3 6 8 1 5

[[33]]
[1] 4 2 7 3 6 8 5 1

[[34]]
[1] 4 2 7 5 1 8 6 3

[[35]]
[1] 4 2 8 5 7 1 3 6

[[36]]
[1] 4 2 8 6 1 3 5 7

[[37]]
[1] 4 6 1 5 2 8 3 7

[[38]]
[1] 4 6 8 2 7 1 3 5

[[39]]
[1] 4 6 8 3 1 7 5 2

[[40]]
[1] 4 7 1 8 5 2 6 3

[[41]]
[1] 4 7 3 8 2 5 1 6

[[42]]
[1] 4 7 5 2 6 1 3 8

[[43]]
[1] 4 7 5 3 1 6 8 2

[[44]]
[1] 4 8 1 3 6 2 7 5

[[45]]
[1] 4 8 1 5 7 2 6 3

[[46]]
[1] 4 8 5 3 1 7 2 6

[[47]]
[1] 5 1 4 6 8 2 7 3

[[48]]
[1] 5 1 8 4 2 7 3 6

[[49]]
[1] 5 1 8 6 3 7 2 4

[[50]]
[1] 5 2 4 6 8 3 1 7

[[51]]
[1] 5 2 4 7 3 8 6 1

[[52]]
[1] 5 2 6 1 7 4 8 3

[[53]]
[1] 5 2 8 1 4 7 3 6

[[54]]
[1] 5 3 1 6 8 2 4 7

[[55]]
[1] 5 3 1 7 2 8 6 4

[[56]]
[1] 5 3 8 4 7 1 6 2

[[57]]
[1] 5 7 1 3 8 6 4 2

[[58]]
[1] 5 7 1 4 2 8 6 3

[[59]]
[1] 5 7 2 4 8 1 3 6

[[60]]
[1] 5 7 2 6 3 1 4 8

[[61]]
[1] 5 7 2 6 3 1 8 4

[[62]]
[1] 5 7 4 1 3 8 6 2

[[63]]
[1] 5 8 4 1 3 6 2 7

[[64]]
[1] 5 8 4 1 7 2 6 3

[[65]]
[1] 6 1 5 2 8 3 7 4

[[66]]
[1] 6 2 7 1 3 5 8 4

[[67]]
[1] 6 2 7 1 4 8 5 3

[[68]]
[1] 6 3 1 7 5 8 2 4

[[69]]
[1] 6 3 1 8 4 2 7 5

[[70]]
[1] 6 3 1 8 5 2 4 7

[[71]]
[1] 6 3 5 7 1 4 2 8

[[72]]
[1] 6 3 5 8 1 4 2 7

[[73]]
[1] 6 3 7 2 4 8 1 5

[[74]]
[1] 6 3 7 2 8 5 1 4

[[75]]
[1] 6 3 7 4 1 8 2 5

[[76]]
[1] 6 4 1 5 8 2 7 3

[[77]]
[1] 6 4 2 8 5 7 1 3

[[78]]
[1] 6 4 7 1 3 5 2 8

[[79]]
[1] 6 4 7 1 8 2 5 3

[[80]]
[1] 6 8 2 4 1 7 5 3

[[81]]
[1] 7 1 3 8 6 4 2 5

[[82]]
[1] 7 2 4 1 8 5 3 6

[[83]]
[1] 7 2 6 3 1 4 8 5

[[84]]
[1] 7 3 1 6 8 5 2 4

[[85]]
[1] 7 3 8 2 5 1 6 4

[[86]]
[1] 7 4 2 5 8 1 3 6

[[87]]
[1] 7 4 2 8 6 1 3 5

[[88]]
[1] 7 5 3 1 6 8 2 4

[[89]]
[1] 8 2 4 1 7 5 3 6

[[90]]
[1] 8 2 5 3 1 7 4 6

[[91]]
[1] 8 3 1 6 2 5 7 4

[[92]]
[1] 8 4 1 3 6 2 7 5

タグ:R
nice!(1)  コメント(0)  トラックバック(0) 
共通テーマ:パソコン・インターネット

nice! 1

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

Facebook コメント

トラックバック 0