如何在 R 中生成 1 和 0 的国际象棋/棋盘矩阵而不全部输入?

How do I produce a chess/chessboard matrix of 1's and 0's in R without typing it all out?

提问人:Jack_L 提问时间:11/1/2023 最后编辑:Jane DoeJack_L 更新时间:11/2/2023 访问量:47

问:

我有一个与此处显示的问题相同的问题(即,制作 1 和 0 的交替矩阵):

制作国际象棋矩阵

我的问题是,似乎没有人回答这个问题,检查使用偶数行/列时会发生什么,例如,正常大小的棋盘(即 8 x 8)。

有没有直接的解决方案?

谢谢!

R Matrix 国际象棋

评论


答:

0赞 ThomasIsCoding 11/2/2023 #1

也许你可以试试

f <- function(n) {
    m <- matrix(seq(1:n^2) %% 2, nrow = n)
    if (!n %% 2) {
        idx <- !seq_len(n) %% 2
        m[, idx] <- 1 - m[, idx]
    }
    m
}

f <- function(n) {
    sapply(1:n, \(k) (!k %% 2) - (-1)^k * rep_len(c(1, 0), n))
}

这样

> f(3)
     [,1] [,2] [,3]
[1,]    1    0    1
[2,]    0    1    0
[3,]    1    0    1

> f(4)
     [,1] [,2] [,3] [,4]
[1,]    1    0    1    0
[2,]    0    1    0    1
[3,]    1    0    1    0
[4,]    0    1    0    1

> f(5)
     [,1] [,2] [,3] [,4] [,5]
[1,]    1    0    1    0    1
[2,]    0    1    0    1    0
[3,]    1    0    1    0    1
[4,]    0    1    0    1    0
[5,]    1    0    1    0    1

> f(6)
     [,1] [,2] [,3] [,4] [,5] [,6]
[1,]    1    0    1    0    1    0
[2,]    0    1    0    1    0    1
[3,]    1    0    1    0    1    0
[4,]    0    1    0    1    0    1
[5,]    1    0    1    0    1    0
[6,]    0    1    0    1    0    1