生命游戏【php版】

47 篇文章 1 订阅

在这里插入图片描述

不使用临时矩阵,利用原矩阵,为了不影响后续判断,使用-1表示细胞由活->死,使用2表示细胞由死->活

	function gameOfLife(&$board) {
		$_move = [0, -1, 1];
		foreach ($board as $rowIndex => &$rowData) {
			foreach ($rowData as $colIndex => &$cell) {
				$_lifeCount = 0;
				for ($i=0; $i<3; $i++) {
					for ($j=0; $j<3; $j++) {
						if ($i==0 && $j==0) {
							continue;
						}
						$_newRow = $rowIndex + $_move[$i];
						$_newCol = $colIndex + $_move[$j];
						if ($_newRow >= 0 && $_newRow < count($board) && $_newCol >=0 && $_newCol < count($board[0]) && ($board[$_newRow][$_newCol] == 1 || $board[$_newRow][$_newCol] == -1)) {
							$_lifeCount++;
						}
					}
				}
				if ($cell == 1 && ($_lifeCount < 2 || $_lifeCount > 3)) {
					$cell = -1;
					continue;
				}
				if ($cell == 0 && ($_lifeCount == 3)) {
					$cell = 2;
				}
			}
		}
		foreach ($board as $rowIndex => &$rowData) {
			foreach ($rowData as $colIndex => &$cell) {
				if ($cell < 0) {
					$cell = 0;
				} else if ($cell > 1) {
					$cell = 1;
				}
			}
		}
	}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值