创建一个包含不重复整数的所有九位数字的矩阵

时间:2016-08-02 18:59:22

标签: r list

对于一个自我指定的项目,我决定尝试创造每一个可能的井字游戏。为了存储和表示这些游戏中的每一个,我决定使用一个包含9列和362880行的矩阵。每行是一个游戏,其中奇数列是“X”移动,偶数列是“O”移动。

(1,2,3,4,5,6,7,NULL,NULL)表示X获胜的游戏。

enter image description here

这就是为什么我想要生成不包含重复整数的每九位数字,因为重复整数意味着玩家试图标记已占用的位置。

以下是一种可能方法的开头

#create matrix that can contain all possible arrangements of moves on a tic-tac-toe board
tictactoematrix <- matrix(ncol = 9, nrow = 362880)

j = 1
k = 1

#create list of possible moves
move <- list(1,2,3,4,5,6,7,8,9)

#populate every row with numbers 1-9
for(i in 1:362880){
  tictactoematrix[i,1] <- move[[1]]
  move[1] <- NULL
  tictactoematrix[i,2] <- move[[1]]
  move[1] <- NULL
  tictactoematrix[i,3] <- move[[1]]
  move[1] <- NULL
  tictactoematrix[i,4] <- move[[1]]
  move[1] <- NULL
  tictactoematrix[i,5] <- move[[1]]
  move[1] <- NULL
  tictactoematrix[i,6] <- move[[1]]
  move[1] <- NULL
  tictactoematrix[i,7] <- move[[1]]
  move[1] <- NULL
  tictactoematrix[i,8] <- move[[1]]
  move[1] <- NULL
  tictactoematrix[i,9] <- move[[1]]
  move[1] <- NULL

  move <- list(1,2,3,4,5,6,7,8,9)
}

输出:

enter image description here

现在显然问题是每一行都是相同的,而我希望每一行都是唯一的。我不能为我的生活弄清楚如何重新排列

中的每个数字

move <- list(1,2,3,4,5,6,7,8,9)

进入每种可能的组合。

2 个答案:

答案 0 :(得分:1)

如果您愿意使用其他套餐,可以直接通过以下方式执行此操作:

{{1}}

答案 1 :(得分:1)

如果您只是在找表:

library(permute)
all_games <- allPerms(1:9, how(maxperm=1e10))