One Step of Life
PHP
Hard
4 views
Problem Description
Given r c and a grid of 0/1, apply one step of Conway's Game of Life and print new grid.
Input Format
First r c. Next r lines of 0/1.
Output Format
r lines grid.
Official Solution
<?php
$inputText=trim(stream_get_contents(STDIN));
if($inputText==='') exit;
$inputLines=preg_split('/\\R/', $inputText);
$head=preg_split('/\\s+/', trim($inputLines[0] ?? ''));
$r=intval($head[0] ?? 0);
$c=intval($head[1] ?? 0);
$g=[];
for($i=0;$i<$r;$i++){
$row=str_pad(trim($inputLines[$i+1] ?? ''),$c,'0');
$g[$i]=str_split(substr($row,0,$c));
}
$output=[];
for($i=0;$i<$r;$i++){
$s='';
for($j=0;$j<$c;$j++){
$cnt=0;
for($di=-1;$di<=1;$di++){
for($dj=-1;$dj<=1;$dj++){
if($di===0 && $dj===0) continue;
$ni=$i+$di; $nj=$j+$dj;
if($ni<0||$nj<0||$ni>=$r||$nj>=$c) continue;
if($g[$ni][$nj]==='1') $cnt++;
}
}
$alive=($g[$i][$j]==='1');
$next='0';
if($alive){
if($cnt===2 || $cnt===3) $next='1';
}else{
if($cnt===3) $next='1';
}
$s.=$next;
}
$output[]=$s;
}
echo implode(PHP_EOL,$output);
?>
Solutions (0)
No solutions submitted yet. Be the first!
No comments yet. Start the discussion!