Java | 三次元版ライフゲーム(セルオートマトン)

APP Java
スポンサーリンク

では「三次元版ライフゲーム」を 可視化 するバージョンを考えてみましょう。
テキストだけだと立体の変化が分かりにくいので、層ごとにグラフ表示する方法を紹介します。ここでは「各層を二次元のマトリクス」として描画し、ステップごとに進化を観察できるようにします。


可視化の考え方

  • 三次元配列を「層ごとに二次元配列」として切り出す。
  • 各セルの状態(生死)を色で表現する。
    • 生きているセル → 黒
    • 死んでいるセル → 白
  • ステップごとに複数の層を並べて表示する。

コード例(Java + 出力イメージ)

Java単体ではグラフ描画が難しいので、ここでは「層ごとにテキスト表示」を行い、Pythonなどの可視化ライブラリを使うとさらに見やすくなります。

Javaでのテキスト可視化

static void printGrid(int[][][] grid, int step) {
    System.out.println("Step " + step);
    for (int z = 0; z < grid.length; z++) {
        System.out.println("Layer " + z + ":");
        for (int x = 0; x < grid[z].length; x++) {
            for (int y = 0; y < grid[z][x].length; y++) {
                System.out.print(grid[z][x][y] == 1 ? "■ " : "□ ");
            }
            System.out.println();
        }
        System.out.println("---");
    }
}
Java

出力イメージ

Step 0
Layer 0:
■ □ ■ □
□ □ ■ ■
■ □ □ □
□ ■ □ ■
---
Layer 1:
□ ■ □ ■
■ □ □ □
□ □ ■ ■
■ □ ■ □
---

Pythonでのグラフ可視化(おすすめ)

Pythonの matplotlib を使うと層ごとに画像として表示できます。

import matplotlib.pyplot as plt
import numpy as np

SIZE = 4
grid = np.random.randint(0, 2, (2, SIZE, SIZE))  # 2層のランダム初期化

def show_grid(grid, step):
    layers = grid.shape[0]
    fig, axes = plt.subplots(1, layers, figsize=(layers*3, 3))
    for z in range(layers):
        axes[z].imshow(grid[z], cmap="binary")
        axes[z].set_title(f"Layer {z} (Step {step})")
        axes[z].axis("off")
    plt.show()

show_grid(grid, 0)
Python

これで「層ごとの進化」を画像として確認できます。


✅ まとめ

  • 三次元ライフゲームは「層ごとに二次元表示」すると理解しやすい。
  • Javaならテキスト表示、Pythonならグラフ表示が便利。
  • ステップごとに表示すれば「立方体の進化」を追える。
タイトルとURLをコピーしました