45 lines
1.1 KiB
PHP
45 lines
1.1 KiB
PHP
<?php
|
|
|
|
$input = file('input', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
|
|
$coordinates = [];
|
|
$folds = [];
|
|
foreach ($input as $line) {
|
|
if (strstr($line, 'fold')) {
|
|
preg_match('#fold along ([x|y])=(\d*)#', $line, $found);
|
|
$folds[] = [$found[1], (int)$found[2]];
|
|
} else {
|
|
$point = explode(',', $line);
|
|
$coordinates[] = $point;
|
|
}
|
|
}
|
|
foreach ($folds as $fold) {
|
|
foreach ($coordinates as &$point) {
|
|
if ($fold[0] == 'x') {
|
|
if ($point[0] > $fold[1]) {
|
|
$point[0] = $fold[1] * 2 - $point[0];
|
|
}
|
|
}
|
|
if ($fold[0] == 'y') {
|
|
if ($point[1] > $fold[1]) {
|
|
$point[1] = $fold[1] * 2 - $point[1];
|
|
}
|
|
}
|
|
}
|
|
$coordinates = points_unique($coordinates);
|
|
echo count($coordinates); //751
|
|
die();
|
|
}
|
|
|
|
function points_unique($coordinates)
|
|
{
|
|
$tmp = [];
|
|
$newCoordinates = [];
|
|
foreach ($coordinates as $point) {
|
|
if (!isset($tmp[implode(',', $point)])) {
|
|
$newCoordinates[] = $point;
|
|
$tmp[implode(',', $point)] = 1;
|
|
}
|
|
}
|
|
return $newCoordinates;
|
|
}
|