$row) { foreach(str_split($row) as $key2 => $node) { $edge[$key][$key2] = $node; if($node == '.') { $scol = $key2; $srow = $key; } } } $distance[0] = array(array($srow, $scol)); $found = $i = 0; /* loop through neighbours until the X is found */ while(!$found) { $tmp=null; /* checking every neighbour to a given distance */ foreach($distance[$i] as $a) { $sr = $a[0]; $sc = $a[1]; $n = $edge[$sr-1][$sc]; $e = $edge[$sr][$sc+1]; $s = $edge[$sr+1][$sc]; $w = $edge[$sr][$sc-1]; if($n == 'X' || $e == 'X' || $s == 'X' || $w == 'X') $found=1; else { if($n == ' ') { $tmp[] = array($sr-1, $sc); $edge[$sr-1][$sc] = '*'; } if($e == ' ') { $tmp[] = array($sr, $sc+1); $edge[$sr][$sc+1] = '*'; } if($s == ' ') { $tmp[] = array($sr+1, $sc); $edge[$sr+1][$sc] = '*'; } if($w == ' ') { $tmp[] = array($sr, $sc-1); $edge[$sr][$sc-1] = '*'; } } } ++$i; if($found) echo $i.'
'; $distance[$i] = $tmp; } } ?>