Пример #1
0
 /**
  * @return Chain
  */
 public function makeChain($x, $y, $chain = null)
 {
     if (isset(self::$see[$y][$x])) {
         return $chain;
     }
     if ($this->allowPoint($x, $y)) {
         if (is_null($chain)) {
             $chain = new Chain();
         }
         $chain->addPoint($x, $y);
         self::$see[$y][$x] = 1;
         if (sizeof($chain->op) > 250) {
             return $chain;
         }
         $this->makeChain($x + 1, $y, $chain);
         $this->makeChain($x, $y + 1, $chain);
         $this->makeChain($x - 1, $y, $chain);
         $this->makeChain($x, $y - 1, $chain);
         $this->makeChain($x + 1, $y + 1, $chain);
         $this->makeChain($x + 1, $y - 1, $chain);
         $this->makeChain($x - 1, $y - 1, $chain);
         $this->makeChain($x - 1, $y + 1, $chain);
     }
     return $chain;
 }
Пример #2
0
Файл: ga.php Проект: vench/esee
function makeChain($points, $x, $y, $chain = null)
{
    static $see = [];
    if (isset($see[$x][$y])) {
        return $chain;
    }
    $see[$x][$y] = 1;
    if (isset($points[$y][$x]) && $points[$y][$x] == 1) {
        if (is_null($chain)) {
            $chain = new Chain();
        }
        $chain->addPoint($x, $y);
        makeChain($points, $x + 1, $y, $chain);
        makeChain($points, $x + 1, $y + 1, $chain);
        makeChain($points, $x, $y + 1, $chain);
        makeChain($points, $x - 1, $y, $chain);
        makeChain($points, $x - 1, $y - 1, $chain);
        makeChain($points, $x, $y - 1, $chain);
        makeChain($points, $x + 1, $y - 1, $chain);
        makeChain($points, $x - 1, $y + 1, $chain);
    }
    return $chain;
}