[JAVA] Kinx Algorithm-Life-Spiel

Kinx Algorithm-Life-Spiel

Einführung

** "Sieht aus wie JavaScript, Gehirn (Inhalt) ist Ruby, (Stabilität ist AC / DC)" ** Skriptsprache Kinx ). "Programm = Algorithmus + Datenstruktur". Einführung in ein Implementierungsbeispiel des Algorithmus.

Die ursprüngliche Geschichte ist "Die neueste Algorithmus-Enzyklopädie in C-Sprache (auch nach 30 Jahren)". Diesmal ist ein Lebensspiel.

In der neuesten Algorithmus-Enzyklopädie gibt es einige solche Dinge. Es ist wie ein Puzzle.

Kinx hat diesen Beispielcode frühzeitig geschrieben und ihn verwendet, um festzustellen, ob das Double-Array korrekt funktioniert und ob die r-Werte im Double-Array-Ergebnis korrekt funktionieren (inkrementierender Teil). Es war ein guter Test.

Lebensspiel

Aus Wikipedia

Life Game (Conways Spiel des Lebens [1]) reproduziert den Prozess der Geburt, Entwicklung und Auswahl des Lebens, den der britische Mathematiker John Horton Conway 1970 mit einem einfachen Modell entwickelt hat. Es ist ein Simulationsspiel. Es hat ein Puzzle-Element, weil Sie die Änderung des Musters mit einfachen Regeln genießen können. In einer biologischen Population hat es einen populationsökologischen Aspekt, der nicht für das individuelle Überleben geeignet ist, unabhängig davon, ob es entvölkert oder überfüllt ist. Es ist auch das bekannteste Beispiel für einen Zellautomaten.

Quellcode

const N = 22;  // Vertical
const M = 78;  // Horizontal
var a = [], b = [];
a[N/2][M/2] = a[N/2-1][M/2] = a[N/2+1][M/2] = a[N/2][M/2-1] = a[N/2-1][M/2+1] = 1;

function life() {
    for (var g = 1; g <= 1000; g++) {
        System.print("Generation %4d\n" % g);
        for (var i = 1; i <= N; i++) {
            for (var j = 1; j <= M; j++)
                if (a[i][j]) {
                    System.print("*");
                    b[i-1][j-1]++;  b[i-1][j]++;  b[i-1][j+1]++;
                    b[i  ][j-1]++;                b[i  ][j+1]++;
                    b[i+1][j-1]++;  b[i+1][j]++;  b[i+1][j+1]++;
                } else System.print(".");
            System.print("\n");
        }
        for (var i = 0; i <= N + 1; i++)
            for (var j = 0; j <= M + 1; j++) {
                if (b[i][j] != 2) a[i][j] = (b[i][j] == 3);
                b[i][j] = 0;
            }
    }
}

life();

Ergebnis

Generation    1
..............................................................................
..............................................................................
..............................................................................
..............................................................................
..............................................................................
..............................................................................
..............................................................................
..............................................................................
..............................................................................
......................................**......................................
.....................................**......................................*
......................................*.......................................
..............................................................................
..............................................................................
..............................................................................
..............................................................................
..............................................................................
..............................................................................
..............................................................................
..............................................................................
..............................................................................
..............................................................................
Generation    2
..............................................................................
..............................................................................
..............................................................................
..............................................................................
..............................................................................
..............................................................................
..............................................................................
..............................................................................
..............................................................................
.....................................***......................................
.....................................*........................................
.....................................**.......................................
..............................................................................
..............................................................................
..............................................................................
..............................................................................
..............................................................................
..............................................................................
..............................................................................
..............................................................................
..............................................................................
..............................................................................

...(Kürzung)

Generation 1000
..............................................................................
.......**.....................................................................
.......**.....................................**..............................
.............................................*..*.............................
............................**................*.*.............................
............................**.................*........**....................
....................................*...................**....................
...........**.......................*.........................................
...........**.......................*.........................................
..............................................................................
...............................**.............................................
..............................*..*............................................
...............................*.*............................................
................................*.............................................
..............................................................................
..............................................................................
..............................................................................
..............................................................................
..............................................................................
..............................................................................
..............................................................................
..............................................................................

abschließend

Dies ist auch fast das gleiche wie die C-Sprachversion. Gut gemacht!

Es gibt einige Algorithmus-Enzyklopädien mit solchen Puzzlespielelementen. Es ist ziemlich interessant, deshalb möchte ich es von Zeit zu Zeit vorstellen.

Bis zum nächsten Mal.

Recommended Posts

Kinx Algorithm-Life-Spiel
Fünfäugiges Spiel
Janken-Spiel