예제 #1
0
 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;
     }
 }
예제 #2
0
 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;
 }
예제 #3
0
<?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();