public function work() { $lines = $this->basicZone->findAllLines(); $lines = array_merge($lines, $this->basicZone->findAllSquares()); usort($lines, function ($l1, $l2) { $a = $l1->square; $b = $l2->square; if ($a == $b) { return 0; } return $a > $b ? -1 : 1; }); $zone = $this->basicZone; $n = 0; foreach ($lines as $line) { $n++; //print $line . PHP_EOL; $zone->applyLine($line); //$zone->out(); if ($zone->isSolved()) { break; } } print $n . PHP_EOL; for ($i = 0; $i < $n; $i++) { print $lines[$i] . PHP_EOL; } }
public function combine(PaintZone $b) { $c = clone $this; foreach ($c->getZone() as $y => $row) { foreach ($row as $x => $cell) { if ($b->_($x, $y) == '+') { $c->_($x, $y, '+'); } } } return $c; }
<?php /** * @author Yurii Savka <*****@*****.**> * @created 08/02/16 12:14 */ function __autoload($class_name) { include $class_name . '.php'; } $fileName = @$argv[1] ?: 'learn_and_teach.in'; $zone = new PaintZone(); $zone->read($fileName); $painter = new Painter($zone); $painter->work();