35 lines
1.1 KiB
PHP
35 lines
1.1 KiB
PHP
<?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;
|
|
|
|
for ($x = 0; $x < 500; $x++) {
|
|
for ($y = -100; $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']) {
|
|
if ($maxY > $totalMaxY) {
|
|
$totalMaxY = $maxY;
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
echo $totalMaxY; //5671
|