[JAVA] Jeu Algorithm-Life Kinx

Jeu Algorithm-Life Kinx

introduction

** "Ressemble à JavaScript, le cerveau (contenu) est Ruby, (la stabilité est AC / DC)" ** Langage de script Kinx ). "Programme = algorithme + structure de données". Présentation d'un exemple d'implémentation de l'algorithme.

L'histoire originale est "La dernière encyclopédie des algorithmes en langage C (même après 30 ans)". Cette fois, c'est un jeu de la vie.

Il y a pas mal de choses de ce genre dans la dernière encyclopédie des algorithmes. C'est comme un puzzle.

Kinx a écrit cet exemple de code très tôt et l'a utilisé pour voir si le double tableau fonctionne correctement et si les valeurs r dans le résultat du double tableau fonctionnent correctement (partie incrémentée). C'était un bon test.

Jeu de vie

De Wikipedia

Life Game (Conway's Game of Life [1]) reproduit le processus de naissance, d'évolution et de sélection de la vie conçu par le mathématicien britannique John Horton Conway en 1970 avec un modèle simple. C'est un jeu de simulation. Il a un élément de puzzle car vous pouvez profiter du changement de motif avec des règles simples. Dans une population biologique, elle présente un aspect écologique de la population qui ne convient pas à la survie individuelle, qu'elle soit dépeuplée ou surpeuplée. C'est aussi l'exemple le plus connu d'automate cellulaire.

Code source

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();

résultat

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

...(réduction)

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

en conclusion

C'est également presque le même que la version en langage C. Bon travail!

Il existe de nombreuses encyclopédies d'algorithmes avec de tels éléments de jeu de puzzle. C'est plutôt intéressant, alors j'aimerais le présenter de temps en temps.

À la prochaine.

Recommended Posts

Jeu Algorithm-Life Kinx
Jeu à cinq yeux
Jeu de Janken