首页 > 其他 > 详细

Game of Life

时间:2020-11-19 18:34:06      阅读:34      评论:0      收藏:0      [点我收藏+]

1 生成二维数组

private void fillRandom(long seed) {
        final Random random = new Random(seed);
        IntStream.range(0, size)
                .forEach(row -> IntStream.range(0, size)
                        .forEach(col -> map[row][col] = random.nextBoolean())
                );
    }

2 Stage 2 另一种方法

import java.util.BitSet;
import java.util.Random;
import java.util.Scanner;
import java.util.function.BiPredicate;

public class Main {
    int size;
    BitSet[] rows;

    Main(int n, int seed, int generations) {
        size = n;
        var rand = new Random(seed);
        evolve((_i, _j) -> rand.nextBoolean());
        while (generations-- > 0) {
            evolve(this::toBeAlive);
        }
    }

    public static void main(String[] args) {
        var sc = new Scanner(System.in);
        new Main(sc.nextInt(), sc.nextInt(), sc.nextInt())
                .display();
    }

    private void evolve(BiPredicate<Integer, Integer> p) {
        var next = new BitSet[size];
        for (int i = 0; i < size; i++) {
            next[i] = new BitSet(size);
            for (int j = 0; j < size; j++) {
                if (p.test(i, j)) {
                    next[i].set(j);
                }
            }
        }
        rows = next;
    }

private boolean toBeAlive(int i, int j) {
        boolean isAlive = rows[i].get(j);
        int neighbors = isAlive ? -1 : 0;
        for (int di = -1; di < 2; di++) {
            for (int dj = -1; dj < 2; dj++) {
                int ii = (i + di + size) % size;
                int jj = (j + dj + size) % size;
                if (rows[ii].get(jj)) {
                    ++neighbors;
                }
            }
        }
        return neighbors == 3 || (isAlive && neighbors == 2);
    }

    private void display() {
        for (int i = 0; i < size; i++) {
            for (int j = 0; j < size; j++) {
                System.out.print(rows[i].get(j) ? ‘O‘ : ‘ ‘);
            }
            System.out.println();
        }
    }
}

Game of Life

原文:https://www.cnblogs.com/longlong6296/p/13963331.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!