Learn R Programming

simecol (version 0.5-5)

eightneighbours: Count Number of Neighbours in a Rectangular Cellular Grid.

Description

This function returns the sum of the eight neibours of a cell within a matrix. It can be used to simulate simple cellular automata, e.g. Conway's Game of Life.

Usage

eightneighbours(x)
  eightneighbors(x)

Arguments

x
The cellular grid, which typically contains integer values of zero (dead cell) or one (living cell).

Value

  • A matrix with the same structure as x, but with the sum of the neighbouring cells of each cell.

See Also

seedfill, neighbours, conway

Examples

Run this code
n<-80
    m<-80
    x<-rep(0, m*n)
    #x[round(runif(1500, 1, m*n))] <- 1
    dim(x) <- c(n,m)
    x[40, 20:60] <- 1

    image(x, col=c("wheat", "grey", "red"))
    x2 <- x
    for (i in 2:10){
      nb <- eightneighbours(x)

      ## survive with 2 or 3 neighbours
      xsurv <- ifelse(x > 0 & (nb == 2 | nb ==3), 1, 0)

      ## generate for empty cells with 3 neigbours
      xgen <- ifelse(x == 0 & nb == 3, 1, 0)

      x  <- ((xgen + xsurv)>0)
      x2 <- ifelse(x2>1, 1, x2)
      x2 <- ifelse(x>0, 2, x2)

      dim(x2) <-c(n,m)
      image(x2, col=c("wheat", "grey", "red"), add=TRUE)
    }

Run the code above in your browser using DataLab