Вы правильно определили, что можете использовать sapply
для решения проблемы. Пожалуйста, смотрите код ниже (быстрый и грязный):
n <- 7
gen_xs <- function(x) c(0, seq(1, x, 2))
move0 <- function(x, pos) {
if (pos == 0)
return(x)
if (pos == length(x) - 1)
return (c(x[-1], 0))
xt <- x[x != 0]
c(xt[1:pos], 0, xt[(pos + 1):length(xt)] )
}
t(sapply(0:((n + 1) / 2), function(x) move0(gen_xs(n), x)))
Выход:
[,1] [,2] [,3] [,4] [,5]
[1,] 0 1 3 5 7
[2,] 1 0 3 5 7
[3,] 1 3 0 5 7
[4,] 1 3 5 0 7
[5,] 1 3 5 7 0