peak <- function (n) { if (n %% 2 != 1) stop("n must be odd") M <- matrix(0,nrow=n,ncol=n) values <- seq(1,0,length=((n+1)/2)) centre <- (n+1)/2 for (ring in 0:((n-3)/2)) { value <- values[ring+1] for (j in (centre-ring):(centre+ring)) { M[centre-ring,j] <- value M[centre+ring,j] <- value M[j,centre-ring] <- value M[j,centre+ring] <- value } } M }