2016-12-02 2 views
1

Ich muss die angrenzenden Zellen für Conways Spiel des Lebens summieren. Ich habe eine 20x20 Matrix und ich muss die Nachbarn berechnen, um die Regeln des Spiels anzuwenden.Summe der benachbarten Zellen für Conways Spiel des Lebens

Der erste Teil des Skripts, das ich wie diese dann in verwandten Beiträgen einige Regeln sah, um die Nachbarn zu berechnen, und ich fand ich diese

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

geschrieben habe:

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 
} 

Als ich das laufen Teil des Skripts mit einem Beispiel:

vecino(grilla,3,5) 

ich diesen Fehler:

Fehler in grilla [j - 1, k]: falsche Anzahl von Dimensionen

das vollständige Skript für Spiele conway angesehen Sie hier: https://www.r-bloggers.com/conway%E2%80%99s-game-of-life-in-r-with-ggplot2-and-animation/

Dank

im Voraus

Antwort

0

Ihre Funktion generar_grilla doesn Es ergibt keinen Sinn. Es handelt sich um eine unspezifizierte i. Man könnte es wie folgt schreiben (man beachte, wie es einfacher ist, zuerst die Werte schaffen sie dann in Form einer Matrix, als es ist, zunächst eine Matrix zu erstellen und dann mit Werten füllen):

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

Dann funktioniert es als erwartet:

> 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 
Verwandte Themen