13th day both parts

This commit is contained in:
kplaczek
2021-12-13 19:19:38 +01:00
parent 67a7f89d87
commit 759d3f6767
4 changed files with 1031 additions and 2 deletions

44
13/part1.php Normal file
View File

@@ -0,0 +1,44 @@
<?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;
}