2016-12-02 47 views
1

我需要爲Conway的生命遊戲總結相鄰的單元格。 我有一個20x20的矩陣,我需要計算鄰居以便應用 遊戲規則。Conway的生命遊戲相鄰單元格的總和

我寫這樣的

generar_grilla<-function(cant, prob_vida){ 
    grilla<-matrix(ncol=cant, nrow=cant) 
    grilla[i]<-rbinom(cant,1,prob_vida) 
    return(grilla) 
} 

然後我就看了相關的帖子一些規則來計算鄰居腳本的第一部分,我發現這一點:

vecino<-function(grilla,j,k) { 
    cant <- nrow(grilla) 
    count <- 0 
    if(j > 1) { 
    count <- count + grilla[j-1, k] 
    if (k > 1) count <- count + grilla[j-1, k-1] 
    if (k < cant) count <- count + grilla[j-1, k+1] 
    } 
    if(j < cant) { 
    count <- count + grilla[j+1,k] 
    if (k > 1) count <- count + grilla[j+1, k-1] 
    if (k < cant) count <- count + grilla[j+1, k+1] 
    } 
    if(k > 1) count <- count + grilla[j, k-1] 
    if(k < cant) count <- count + grilla[j, k+1] 
    count 
} 

當我運行這個部分腳本舉例:

vecino(grilla,3,5) 

我得到這個錯誤:

錯誤格里拉[J - 1,K]:https://www.r-bloggers.com/conway%E2%80%99s-game-of-life-in-r-with-ggplot2-and-animation/

在此先感謝

回答

0

你的功能generar_grilla沒有按:尺寸

爲康威的遊戲的完整劇本,在這裏可以查看的數量不正確沒有道理。它涉及一個未指定的i。你可以把它寫成如下(注意它是如何更容易首先創建的值,然後他們塑造成一個矩陣比它先創建一個矩陣,然後用值填充):

generar_grilla<-function(cant, prob_vida) { 
    cells = rbinom(cant^2,1,prob_vida) 
    matrix(cells,nrow = cant)} 

然後,它可以作爲預計:

> grilla = generar_grilla(5,.2) 
> grilla 
    [,1] [,2] [,3] [,4] [,5] 
[1,] 0 1 0 1 1 
[2,] 0 0 0 0 1 
[3,] 0 0 0 0 0 
[4,] 0 0 1 0 1 
[5,] 0 0 0 0 0 
> vecino(grilla,2,4) 
[1] 3