McGehee, Robert wrote:
I had some fun this afternoon coding up a 'maze generator' in R. I
thought I'd pass along the fruits of my labor for everyone's amusement.

As written, every point is connected to every other point, so feel free
to 'start' and 'finish' anywhere you like.

Have fun! --Robert

PS. Feel free to pass along suggestions or comments.

You have prb[i] <-p but no definition of i. What was intended?

   -pd
----------------------------------------------------------------
plotMaze <- function(z, text=FALSE, lwd=2, ...) {
    N <- nrow(z)
    y <- -matrix(rep(1:N, N), N, N, byrow=FALSE)-1
    x <- matrix(rep(1:N, N), N, N, byrow=TRUE)
    plot(1:(N+1), -1:-(N+1), type="n", ylab="", xlab="", axes=FALSE,
...)
    segments(1, -1:-(N+1) , N+1, -1:-(N+1), lwd=lwd)
    segments(1:(N+1), -1, 1:(N+1), -(N+1), lwd=lwd)
    segments(x+(z==4), y+(z==3), x+(z!=2), y+(z!=1), col="white",
lwd=lwd)
    if (text) text(x+0.5, y+0.5, z)
    rect(1, -1, N+1, -(N+1), lwd=lwd)
}


makeMaze <- function(N, p=1) { # large 'p' may result in more order
plots
    z <- matrix(NA+0, N, N)
    s <- function(x) if (length(x)==1) x else sample(x, size=1)
    z[s(1:length(z))] <- 0
    while (any(is.na(z))) {
        xx <- list(z[c(2:N, N),],
                   z[,c(1, 1:(N-1))],
                   z[c(1, 1:(N-1)),],
                   z[,c(2:N, N)])
        xx[[1]][N,] <- NA; xx[[2]][,1] <- NA; xx[[3]][1,] <- NA;
xx[[4]][,N] <- NA
        prb <- rep(1, 4); prb[i] <- p
        for (i in sample(1:4, prob=prb)) {
            q <- !is.na(xx[[i]]) & is.na(z)
            if (!any(q)) next
            z[s(which(q))] <- i
            break
        }
    }
    z
}
set.seed(1)
plotMaze(makeMaze(10), main="Simple Maze")
plotMaze(makeMaze(25), main="Hard  Maze", lwd=1)


Robert McGehee, CFA
Geode Capital Management, LLC
One Post Office Square, 28th Floor | Boston, MA | 02109
Tel: 617/392-8396    Fax:617/476-6389
mailto:[EMAIL PROTECTED]



This e-mail, and any attachments hereto, are intended fo...{{dropped:11}}

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.


--
  O__  ---- Peter Dalgaard             Ă˜ster Farimagsgade 5, Entr.B
 c/ /'_ --- Dept. of Biostatistics     PO Box 2099, 1014 Cph. K
(*) \(*) -- University of Copenhagen   Denmark      Ph:  (+45) 35327918
~~~~~~~~~~ - ([EMAIL PROTECTED])              FAX: (+45) 35327907

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to