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
コメント 0