Apply code changes after dependency update

This commit is contained in:
Tristan 2023-12-01 11:06:10 +01:00
parent c5400b78d8
commit a3be3f026d
Signed by: trizz
SSH Key Fingerprint: SHA256:Xsd2dTN+ZC3OZWfvuKIDMQ/1lWicuINSEPgRQw/CJT8
13 changed files with 85 additions and 98 deletions

View File

@ -15,6 +15,7 @@ final class ExecuteDay extends Command
private string $title; private string $title;
#[\Override]
protected function configure(): void protected function configure(): void
{ {
$this $this
@ -24,6 +25,7 @@ final class ExecuteDay extends Command
->addArgument('year', InputArgument::OPTIONAL, 'The year', date('y')); ->addArgument('year', InputArgument::OPTIONAL, 'The year', date('y'));
} }
#[\Override]
protected function initialize(InputInterface $input, OutputInterface $output): void protected function initialize(InputInterface $input, OutputInterface $output): void
{ {
$this->day = $input->getArgument('day'); $this->day = $input->getArgument('day');
@ -36,6 +38,7 @@ final class ExecuteDay extends Command
$output->writeln(str_repeat('-', strlen($this->title))); $output->writeln(str_repeat('-', strlen($this->title)));
} }
#[\Override]
protected function execute(InputInterface $input, OutputInterface $output): int protected function execute(InputInterface $input, OutputInterface $output): int
{ {
$className = sprintf('%s\\Y%d\\Day%d', __NAMESPACE__, $this->year, $this->day); $className = sprintf('%s\\Y%d\\Day%d', __NAMESPACE__, $this->year, $this->day);

View File

@ -10,6 +10,7 @@ use Symfony\Component\Console\Output\OutputInterface;
final class Puzzle extends Command final class Puzzle extends Command
{ {
#[\Override]
protected function configure(): void protected function configure(): void
{ {
$this $this
@ -19,6 +20,7 @@ final class Puzzle extends Command
->addArgument('year', InputArgument::OPTIONAL, 'The year', date('y')); ->addArgument('year', InputArgument::OPTIONAL, 'The year', date('y'));
} }
#[\Override]
protected function execute(InputInterface $input, OutputInterface $output): int protected function execute(InputInterface $input, OutputInterface $output): int
{ {
$contents = file_get_contents( $contents = file_get_contents(

View File

@ -6,13 +6,13 @@ use JetBrains\PhpStorm\ArrayShape;
abstract class Solution abstract class Solution
{ {
public static int|string|null $part1ExampleResult = null; public static null|int|string $part1ExampleResult = null;
public static int|string|null $part1Result = null; public static null|int|string $part1Result = null;
public static int|string|null $part2ExampleResult = null; public static null|int|string $part2ExampleResult = null;
public static int|string|null $part2Result = null; public static null|int|string $part2Result = null;
/** /**
* @var bool When false, do not apply the `array_filter` function when the data is loaded. * @var bool When false, do not apply the `array_filter` function when the data is loaded.
@ -89,12 +89,12 @@ abstract class Solution
public function hasData(): bool public function hasData(): bool
{ {
return !empty($this->data); return $this->data !== null && $this->data !== [];
} }
public function hasExampleData(): bool public function hasExampleData(): bool
{ {
return !empty($this->exampleData); return $this->exampleData !== [];
} }
/** /**

View File

@ -25,7 +25,7 @@ final class Arr
} else { } else {
$values = $depth === 1 $values = $depth === 1
? array_values($item) ? array_values($item)
: static::flatten($item, $depth - 1); : self::flatten($item, $depth - 1);
foreach ($values as $value) { foreach ($values as $value) {
$result[] = $value; $result[] = $value;

View File

@ -6,17 +6,15 @@ use trizz\AdventOfCode\Solution;
final class Day1 extends Solution final class Day1 extends Solution
{ {
public static int|string|null $part1ExampleResult = 7; public static null|int|string $part1ExampleResult = 7;
public static int|string|null $part1Result = 1688; public static null|int|string $part1Result = 1688;
public static int|string|null $part2ExampleResult = 5; public static null|int|string $part2ExampleResult = 5;
public static int|string|null $part2Result = 1728; public static null|int|string $part2Result = 1728;
/** #[\Override]
* {@inheritdoc}
*/
public function part1(array $data): int public function part1(array $data): int
{ {
$previous = null; $previous = null;
@ -34,9 +32,7 @@ final class Day1 extends Solution
return $increases; return $increases;
} }
/** #[\Override]
* {@inheritdoc}
*/
public function part2(array $data): int public function part2(array $data): int
{ {
$previousSum = null; $previousSum = null;

View File

@ -6,17 +6,15 @@ use trizz\AdventOfCode\Solution;
final class Day2 extends Solution final class Day2 extends Solution
{ {
public static int|string|null $part1ExampleResult = 150; public static null|int|string $part1ExampleResult = 150;
public static int|string|null $part1Result = 1_654_760; public static null|int|string $part1Result = 1_654_760;
public static int|string|null $part2ExampleResult = 900; public static null|int|string $part2ExampleResult = 900;
public static int|string|null $part2Result = 1_956_047_400; public static null|int|string $part2Result = 1_956_047_400;
/** #[\Override]
* {@inheritdoc}
*/
public function part1(array $data): int public function part1(array $data): int
{ {
$depth = 0; $depth = 0;
@ -40,9 +38,7 @@ final class Day2 extends Solution
return $depth * $horizontal; return $depth * $horizontal;
} }
/** #[\Override]
* {@inheritdoc}
*/
public function part2(array $data): int public function part2(array $data): int
{ {
$aim = 0; $aim = 0;

View File

@ -6,13 +6,11 @@ use trizz\AdventOfCode\Solution;
final class Day3 extends Solution final class Day3 extends Solution
{ {
public static int|string|null $part1ExampleResult = 198; public static null|int|string $part1ExampleResult = 198;
public static int|string|null $part1Result = 3_309_596; public static null|int|string $part1Result = 3_309_596;
/** #[\Override]
* {@inheritdoc}
*/
public function part1(array $data): int public function part1(array $data): int
{ {
$bits = []; $bits = [];
@ -29,8 +27,8 @@ final class Day3 extends Solution
$epsilonRate = ''; $epsilonRate = '';
foreach ($bits as $bit) { foreach ($bits as $bit) {
$zeros = array_filter($bit, static fn ($value) => $value === '0'); $zeros = array_filter($bit, static fn ($value): bool => $value === '0');
$ones = array_filter($bit, static fn ($value) => $value === '1'); $ones = array_filter($bit, static fn ($value): bool => $value === '1');
$gammaRate .= ($ones > $zeros) ? '1' : '0'; $gammaRate .= ($ones > $zeros) ? '1' : '0';
$epsilonRate .= ($ones < $zeros) ? '1' : '0'; $epsilonRate .= ($ones < $zeros) ? '1' : '0';

View File

@ -6,25 +6,21 @@ use trizz\AdventOfCode\Solution;
final class Day4 extends Solution final class Day4 extends Solution
{ {
public static int|string|null $part1ExampleResult = 4512; public static null|int|string $part1ExampleResult = 4512;
public static int|string|null $part1Result = 60368; public static null|int|string $part1Result = 60368;
public static int|string|null $part2ExampleResult = 1924; public static null|int|string $part2ExampleResult = 1924;
public static int|string|null $part2Result = 17435; public static null|int|string $part2Result = 17435;
/** #[\Override]
* {@inheritdoc}
*/
public function part1(array $data): int|string public function part1(array $data): int|string
{ {
return $this->playBingo($data, firstWins: true); return $this->playBingo($data, firstWins: true);
} }
/** #[\Override]
* {@inheritdoc}
*/
public function part2(array $data): int|string public function part2(array $data): int|string
{ {
return $this->playBingo($data, firstWins: false); return $this->playBingo($data, firstWins: false);
@ -41,7 +37,7 @@ final class Day4 extends Solution
array_walk_recursive($winningCard, static function (bool $value, int $key) use (&$return): void { array_walk_recursive($winningCard, static function (bool $value, int $key) use (&$return): void {
$return[$key] = $value; $return[$key] = $value;
}); });
$unusedNumbers = array_keys(array_filter($return, static fn (bool $value) => !$value)); $unusedNumbers = array_keys(array_filter($return, static fn (bool $value): bool => !$value));
return (int) array_sum($unusedNumbers) * $number; return (int) array_sum($unusedNumbers) * $number;
} }
@ -56,10 +52,10 @@ final class Day4 extends Solution
private function explodeNumbers(string $numberList, string $separator): array private function explodeNumbers(string $numberList, string $separator): array
{ {
return array_map( return array_map(
static fn ($value) => (int) $value, static fn ($value): int => (int) $value,
array_filter( array_filter(
explode($separator, $numberList), explode($separator, $numberList),
static fn (string $value) => $value !== '' static fn (string $value): bool => $value !== ''
) )
); );
} }
@ -96,7 +92,7 @@ final class Day4 extends Solution
} }
$winningCards = $this->checkCards($cards, $finishedCards); $winningCards = $this->checkCards($cards, $finishedCards);
if (empty($winningCards)) { if ($winningCards === []) {
continue; continue;
} }
@ -129,7 +125,7 @@ final class Day4 extends Solution
{ {
$cards = array_chunk($data, 5); $cards = array_chunk($data, 5);
foreach ($cards as $card => $rows) { foreach ($cards as $card => $rows) {
$cards[$card] = array_map(fn ($value) => $this->explodeNumbers($value, ' '), $rows); $cards[$card] = array_map(fn ($value): array => $this->explodeNumbers($value, ' '), $rows);
foreach ($cards[$card] as $row => $number) { foreach ($cards[$card] as $row => $number) {
$cards[$card][$row] = array_fill_keys(array_values($number), false); $cards[$card][$row] = array_fill_keys(array_values($number), false);
@ -147,6 +143,7 @@ final class Day4 extends Solution
private function checkCards(array $cards, array $finishedCards): array private function checkCards(array $cards, array $finishedCards): array
{ {
$winningCards = []; $winningCards = [];
// Check rows // Check rows
/** /**
* @var int $cardIndex * @var int $cardIndex

View File

@ -7,13 +7,13 @@ use trizz\AdventOfCode\Solution;
final class Day6 extends Solution final class Day6 extends Solution
{ {
public static int|string|null $part1ExampleResult = 5934; public static null|int|string $part1ExampleResult = 5934;
public static int|string|null $part1Result = 350917; public static null|int|string $part1Result = 350917;
public static int|string|null $part2ExampleResult = 26_984_457_539; public static null|int|string $part2ExampleResult = 26_984_457_539;
public static int|string|null $part2Result = 1_592_918_715_629; public static null|int|string $part2Result = 1_592_918_715_629;
/** /**
* @var int[] * @var int[]
@ -32,17 +32,13 @@ final class Day6 extends Solution
0 => 0, 0 => 0,
]; ];
/** #[\Override]
* {@inheritdoc}
*/
public function part1(array $data): int public function part1(array $data): int
{ {
return $this->processPuzzle(80, $data[0]); return $this->processPuzzle(80, $data[0]);
} }
/** #[\Override]
* {@inheritdoc}
*/
public function part2(array $data): int public function part2(array $data): int
{ {
return $this->processPuzzle(256, $data[0]); return $this->processPuzzle(256, $data[0]);

View File

@ -6,25 +6,21 @@ use trizz\AdventOfCode\Solution;
final class Day7 extends Solution final class Day7 extends Solution
{ {
public static int|string|null $part1ExampleResult = 37; public static null|int|string $part1ExampleResult = 37;
public static int|string|null $part1Result = 344297; public static null|int|string $part1Result = 344297;
public static int|string|null $part2ExampleResult = 168; public static null|int|string $part2ExampleResult = 168;
public static int|string|null $part2Result = 97_164_301; public static null|int|string $part2Result = 97_164_301;
/** #[\Override]
* {@inheritdoc}
*/
public function part1(array $data): int public function part1(array $data): int
{ {
return $this->calculateFuel($data[0], forPart2: false); return $this->calculateFuel($data[0], forPart2: false);
} }
/** #[\Override]
* {@inheritdoc}
*/
public function part2(array $data): int public function part2(array $data): int
{ {
return $this->calculateFuel($data[0], forPart2: true); return $this->calculateFuel($data[0], forPart2: true);
@ -32,7 +28,7 @@ final class Day7 extends Solution
private function calculateFuel(string $data, bool $forPart2 = false): int private function calculateFuel(string $data, bool $forPart2 = false): int
{ {
$crabs = array_map(static fn (string $crab) => (int) $crab, explode(',', $data)); $crabs = array_map(static fn (string $crab): int => (int) $crab, explode(',', $data));
/** @psalm-param array{int: int} $fuelPerPosition */ /** @psalm-param array{int: int} $fuelPerPosition */
$fuelPerPosition = []; $fuelPerPosition = [];

View File

@ -8,30 +8,28 @@ use trizz\AdventOfCode\Utils\Str;
final class Day8 extends Solution final class Day8 extends Solution
{ {
public static int|string|null $part1ExampleResult = 26; public static null|int|string $part1ExampleResult = 26;
public static int|string|null $part1Result = 397; public static null|int|string $part1Result = 397;
public static int|string|null $part2ExampleResult = 61229; public static null|int|string $part2ExampleResult = 61229;
public static int|string|null $part2Result = 1_027_422; public static null|int|string $part2Result = 1_027_422;
private array $digitPatterns; private array $digitPatterns;
private array $patternDigits; private array $patternDigits;
/** #[\Override]
* {@inheritdoc}
*/
public function part1(array $data): int public function part1(array $data): int
{ {
$values = array_map( $values = array_map(
static fn ($item) => strlen((string) $item), static fn ($item): int => strlen((string) $item),
Arr::flatten( Arr::flatten(
array_map( array_map(
static fn ($item) => explode(' ', $item), static fn ($item): array => explode(' ', (string) $item),
array_map( array_map(
static fn ($item) => explode(' | ', $item)[1], static fn ($item): string => explode(' | ', (string) $item)[1],
$data $data
) )
) )
@ -41,6 +39,7 @@ final class Day8 extends Solution
return count(array_intersect($values, [2, 4, 3, 7])); return count(array_intersect($values, [2, 4, 3, 7]));
} }
#[\Override]
public function part2(array $data): int|string public function part2(array $data): int|string
{ {
$sequences = []; $sequences = [];
@ -80,37 +79,37 @@ final class Day8 extends Solution
/** @noinspection PackedHashtableOptimizationInspection */ /** @noinspection PackedHashtableOptimizationInspection */
$findDigit = [ $findDigit = [
// 1 is the only one with 2 segments // 1 is the only one with 2 segments
1 => static fn (string $pattern) => strlen($pattern) === 2, 1 => static fn (string $pattern): bool => strlen($pattern) === 2,
// 7 is the only one with 3 segments // 7 is the only one with 3 segments
7 => static fn (string $pattern) => strlen($pattern) === 3, 7 => static fn (string $pattern): bool => strlen($pattern) === 3,
// 4 is the only one with 4 segments // 4 is the only one with 4 segments
4 => static fn (string $pattern) => strlen($pattern) === 4, 4 => static fn (string $pattern): bool => strlen($pattern) === 4,
// 8 is the only one with 7 segments // 8 is the only one with 7 segments
8 => static fn (string $pattern) => strlen($pattern) === 7, 8 => static fn (string $pattern): bool => strlen($pattern) === 7,
// 9 is 6 segments, matches segments for 4 // 9 is 6 segments, matches segments for 4
9 => fn (string $pattern) => strlen($pattern) === 6 && Str::matchesAll( 9 => fn (string $pattern): bool => strlen($pattern) === 6 && Str::matchesAll(
$pattern, $pattern,
$this->digitPatterns[4] ?? '' $this->digitPatterns[4] ?? ''
), ),
// 0 is 6 segments, matching 1's segments (9 is already out) // 0 is 6 segments, matching 1's segments (9 is already out)
0 => fn (string $pattern) => strlen($pattern) === 6 && Str::matchesAll( 0 => fn (string $pattern): bool => strlen($pattern) === 6 && Str::matchesAll(
$pattern, $pattern,
$this->digitPatterns[1] ?? '' $this->digitPatterns[1] ?? ''
), ),
// 6 is 6 segments, the only one left // 6 is 6 segments, the only one left
6 => static fn (string $pattern) => strlen($pattern) === 6, 6 => static fn (string $pattern): bool => strlen($pattern) === 6,
// 3 is 5 segments and matches 1's segments // 3 is 5 segments and matches 1's segments
3 => fn (string $pattern) => strlen($pattern) === 5 && Str::matchesAll( 3 => fn (string $pattern): bool => strlen($pattern) === 5 && Str::matchesAll(
$pattern, $pattern,
$this->digitPatterns[1] ?? '' $this->digitPatterns[1] ?? ''
), ),
// 5 is 5 segments, and 9 has all the segments of 5 // 5 is 5 segments, and 9 has all the segments of 5
5 => fn (string $pattern) => strlen($pattern) === 5 && Str::matchesAll( 5 => fn (string $pattern): bool => strlen($pattern) === 5 && Str::matchesAll(
$this->digitPatterns[9] ?? '', $this->digitPatterns[9] ?? '',
$pattern $pattern
), ),
// 2 is the only one remaining // 2 is the only one remaining
2 => static fn (string $pattern) => true, 2 => static fn (string $pattern): bool => true,
]; ];
foreach ($findDigit as $digit => $test) { foreach ($findDigit as $digit => $test) {

View File

@ -6,21 +6,23 @@ use trizz\AdventOfCode\Solution;
final class Day1 extends Solution final class Day1 extends Solution
{ {
public static int|string|null $part1ExampleResult = 24000; public static null|int|string $part1ExampleResult = 24000;
public static int|string|null $part1Result = 72240; public static null|int|string $part1Result = 72240;
public static int|string|null $part2ExampleResult = 45000; public static null|int|string $part2ExampleResult = 45000;
public static int|string|null $part2Result = 210957; public static null|int|string $part2Result = 210957;
public bool $filterDataOnLoad = false; public bool $filterDataOnLoad = false;
#[\Override]
public function part1(array $data): int public function part1(array $data): int
{ {
return $this->calculateCalories($data)[0]; return $this->calculateCalories($data)[0];
} }
#[\Override]
public function part2(array $data): int public function part2(array $data): int
{ {
$results = $this->calculateCalories($data); $results = $this->calculateCalories($data);

View File

@ -7,14 +7,15 @@ use trizz\AdventOfCode\Y22\Day2\RPS;
final class Day2 extends Solution final class Day2 extends Solution
{ {
public static int|string|null $part1ExampleResult = 15; public static null|int|string $part1ExampleResult = 15;
public static int|string|null $part1Result = 10994; public static null|int|string $part1Result = 10994;
public static int|string|null $part2ExampleResult = 12; public static null|int|string $part2ExampleResult = 12;
public static int|string|null $part2Result = 12526; public static null|int|string $part2Result = 12526;
#[\Override]
public function part1(array $data): int public function part1(array $data): int
{ {
$score = 0; $score = 0;
@ -28,6 +29,7 @@ final class Day2 extends Solution
return $score; return $score;
} }
#[\Override]
public function part2(array $data): int public function part2(array $data): int
{ {
$score = 0; $score = 0;