advent_of_code_2021/day_7/part_2.php

22 lines
570 B
PHP

<?php
$positions = array_map('intval', explode(',', file_get_contents('./input.txt')));
$min = min($positions);
$max = max($positions);
$lowest_fuel = $max * array_sum(range(1, $max));
$best_position = 0;
for ($i = $min; $i <= $max; $i++) {
$fuel_used = 0;
foreach ($positions as $position) {
$fuel_used += array_sum(range(1, abs($position - $i)));
}
if ($lowest_fuel > $fuel_used) {
$lowest_fuel = $fuel_used;
$best_position = $i;
}
}
echo sprintf('Best position is %u with %u fuel used.', $best_position, $lowest_fuel);