17th day both parts

This commit is contained in:
kplaczek
2021-12-17 23:30:25 +01:00
parent 223863aa1f
commit 06ca3641aa
4 changed files with 75 additions and 0 deletions

38
17/part2.php Normal file
View File

@@ -0,0 +1,38 @@
<?php
$input = file('input', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
preg_match('#target area: x=(?P<x1>[\d-]*)..(?P<x2>[\d-]*), y=(?P<y2>[\d-]*)..(?P<y1>[\d-]*)#', $input[0], $found);
$totalMaxY = 0;
$velocities = 0;
for ($x = 0; $x < 1500; $x++) {
for ($y = -500; $y < 500; $y++) {
$velocityX = $x;
$velocityY = $y;
$position = [0, 0];
$maxY = 0;
while ($position[0] < $found['x2'] && $position[1] > $found['y2']) {
$position[0] += $velocityX;
$position[1] += $velocityY;
if ($velocityX != 0) {
$velocityX += $velocityX > 0 ? -1 : 1;
}
if ($position[1] > $maxY) {
$maxY = $position[1];
}
$velocityY--;
if ($position[0] >= $found['x1'] &&
$position[0] <= $found['x2'] &&
$position[1] <= $found['y1'] &&
$position[1] >= $found['y2']) {
$velocities++;
if ($maxY > $totalMaxY) {
$totalMaxY = $maxY;
}
break;
}
}
}
}
echo $velocities; //4556