生命游戏(Life game)
[b]问题说明:[/b]
生命游戏,为1970年英国数学家J.H.Conway所提出,某一细胞的邻居包括上,下,左,右,左上,左下,右上与右下相邻的细胞,游戏规则如下:
1,孤单死亡:如果细胞的邻居小于一个,则该细胞在下一个状态死亡。
2,拥挤死亡:如果细胞的邻居在四个以上,则该细胞在下一个状态死亡。
3,稳定:如果细胞的邻居为两个或三个,则该细胞在下一个状态稳定。
4,复活:如果某位置原无细胞存活,而该位置的邻居为三个,则该位置将复活一个细胞。
import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;
public class LifeGame { private boolean[][] map; private boolean[][] newmap;
public LifeGame(int maxRow, int maxColumn) { map = new boolean[maxRow][maxColumn]; newmap = new boolean[maxRow][maxColumn]; }
public void setCell(int x, int y) { map[x][y] = true; }
public void next() { for(int row = 0; row < map.length; row++) { for(int col = 0; col < map[0].length; col++) { switch (neighbors(row, col)) { case 0: case 1: case 4: case 5: case 6: case 7: case 8: newmap[row][col] = false; break; case 2: newmap[row][col] = map[row][col]; break; case 3: newmap[row][col] = true; break; } } }
copyMap(); }
public void outputMap() throws IOException { System.out.println("\n\nGame of life cell status"); for(int row = 0; row < map.length; row++) { System.out.print("\n "); for(int col = 0; col < map[0].length; col++) if(map[row][col] == true) System.out.print('#'); else System.out.print('-'); } }
private void copyMap() { for(int row = 0; row < map.length; row++) for(int col = 0; col < map[0].length; col++) map[row][col] = newmap[row][col]; }
private int neighbors(int row, int col) { int count = 0;
for(int r = row-1; r <= row+1; r++) for(int c = col-1; c <= col+1; c++) { if(r < 0 || r >= map.length || c < 0 || c >= map[0].length) continue; if(map[r][c] == true) count++; }
if(map[row][col] == true) count--;
return count; }
public static void main(String[] args) throws NumberFormatException, IOException { BufferedReader bufReader = new BufferedReader( new InputStreamReader(System.in));
LifeGame game = new LifeGame(10, 25);
System.out.println("Game of life Program"); System.out.println( "Enter x, y where x, y is living cell"); System.out.println("0 <= x < 10, 0 <= y < 25"); System.out.println("Terminate with x, y = -1, -1");
while(true) { String[] strs = bufReader.readLine().split(" "); int row = Integer.parseInt(strs[0]); int col = Integer.parseInt(strs[1]);
if(0 <= row && row < 10 && 0 <= col && row < 25) game.setCell(row, col); else if(row == -1 || col == -1) { break; } else { System.out.print( "(x, y) exceeds map ranage!"); } }
while(true) { game.outputMap(); game.next();
System.out.print( "\nContinue next Generation ? ");
String ans = bufReader.readLine().toUpperCase();
if(!ans.equals("Y")) break; } }}
生命游戏(Life game)相关推荐
- 伍六七带你学算法 进阶篇-生命游戏
有趣的算法题–生命游戏 难度-中等 根据 百度百科 ,生命游戏,简称为生命,是英国数学家约翰·何顿·康威在 1970 年发明的细胞自动机. 想要体验生命游戏的小伙伴可以到这里-->生命游戏 进入 ...
- html5 生存游戏,html5版生命游戏
html5版生命游戏 只有一个.html文件,无任何依赖. 使用canvas 1.[文件] index.html ~ 4KB 下载(206) canvas { background: #eee ...
- 康威生命游戏是如何搭建计算机的?
2020年4月,数学家约翰·康威(John H. Conway)因新冠肺炎去世.大家回顾康威教授平生贡献时,不可避免要提到伟大.深刻的"康威生命游戏"(Conway's Game ...
- 生命游戏(Game of Life)描述
一.生命游戏(Game of Life)描述 生命游戏是英国数学家约翰·何顿·康威在1970年发明的细胞自动机,它包括一个二维矩形世界,这个世界中的每个方格居住着一个活着的或死亡的细胞.一个细胞在下一 ...
- 细胞计算机生命游戏,【图片】【20170108 其它內容】【转】生命游戏【三体吧】_百度贴吧...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 有些初始图案最终会得到稳定不变的图形,康威把这些稳定图形叫做"静物"(still life).常见的静物有:方块.小船.面包.蜂巢等( ...
- [Leetcode] 第289题 生命游戏
一.题目描述 根据百度百科,生命游戏,简称为生命,是英国数学家约翰·何顿·康威在1970年发明的细胞自动机. 给定一个包含 m × n 个格子的面板,每一个格子都可以看成是一个细胞.每个细胞具有一个初 ...
- 分布与并行计算—生命游戏(Java)
生命游戏其实是一个零玩家游戏,它包括一个二维矩形世界,这个世界中的每个方格居住着一个活着的或死了的细胞.一个细胞在下一个时刻生死取决于相邻八个方格中活着的或死了的细胞的数量.如果相邻方格活着的细胞数量 ...
- [Leedcode][JAVA][第289题][生命游戏]
[问题描述] 根据 百度百科 ,生命游戏,简称为生命,是英国数学家约翰·何顿·康威在 1970 年发明的细胞自动机.给定一个包含 m × n 个格子的面板,每一个格子都可以看成是一个细胞.每个细胞都具 ...
- LeetCode 289. 生命游戏(位运算)
文章目录 1. 题目 2. 解题 2.1 复制数组解法 2.2 原地解法 2.3 位运算 1. 题目 链接:289. 生命游戏 2. 解题 2.1 复制数组解法 很简单,按照题意模拟即可 class ...
- Leetcode--289. 生命游戏
根据百度百科,生命游戏,简称为生命,是英国数学家约翰·何顿·康威在1970年发明的细胞自动机. 给定一个包含 m × n 个格子的面板,每一个格子都可以看成是一个细胞.每个细胞具有一个初始状态 liv ...
最新文章
- Using --强制资源清理
- 基于FPGA的costas环同步系统仿真与分析
- 3.1.11 OS之段页式存储管理(段表、页表、地址转换、)
- time模块及datetime模块常用方法讲解
- flex基于svn协同开发
- Python 提交表单数的一点简单介绍How to submit a web form
- linux send and recv详解
- ABAP-内表数据下载到CSV格式(原创转载请注明)
- 一个奇怪的DNS服务器故障
- 语法比较:Julia,Matlab,Python
- java简历项目经验描述,分分钟搞定!
- uniapp h5在线预览word文档ppt等
- 界面画好了如何开发软件_如何做儿童类APP?来看英语流利说的实战经验总结!...
- 傅里叶变换与时域频域关系
- 淘宝在线客服为什么回复那么慢
- 深度学习FlappyBird环境搭建
- STM32单片机DMA实验
- vue中使用threejs的一些问题,THREE上没有OrbitControls
- 完美世界手游服务器维护时间表,完美世界手游开服时间表 新区开服时间总览[多图]...
- python唐诗分析综合_Python爬虫抓取唐诗宋词