diff --git a/src/ExecuteDay.php b/src/ExecuteDay.php index 2857834..33ff7e5 100644 --- a/src/ExecuteDay.php +++ b/src/ExecuteDay.php @@ -9,14 +9,15 @@ use Symfony\Component\Console\Output\OutputInterface; class ExecuteDay extends Command { - protected int $day; - - protected int $year; /** * @var string The title. */ private string $title; + protected int $day; + + protected int $year; + /** * Configure the command. */ diff --git a/src/Puzzle.php b/src/Puzzle.php index 23977ec..8b9a588 100644 --- a/src/Puzzle.php +++ b/src/Puzzle.php @@ -2,11 +2,11 @@ namespace trizz\AdventOfCode; +use trizz\AdventOfCode\Utils\SymfonyConsoleMarkdown; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; -use trizz\AdventOfCode\Utils\SymfonyConsoleMarkdown; class Puzzle extends Command { @@ -14,7 +14,8 @@ class Puzzle extends Command { $this ->setName('puzzle') - ->addArgument('day', InputArgument::REQUIRED, 'The day number.'); + ->addArgument('day', InputArgument::REQUIRED, 'The day number.') + ->addArgument('year', InputArgument::OPTIONAL, 'The year', date('y')); } /** @@ -22,7 +23,14 @@ class Puzzle extends Command */ protected function execute(InputInterface $input, OutputInterface $output): int { - $contents = file_get_contents(sprintf('%s/../data/day%s/puzzle.md', __DIR__, (int) $input->getArgument('day'))); + $contents = file_get_contents( + sprintf( + '%s/../data/Y%d/day%s/puzzle.md', + __DIR__, + $input->getArgument('year'), + (int) $input->getArgument('day') + ) + ); $rendered = (new SymfonyConsoleMarkdown())->render($contents); $output->writeln($rendered); diff --git a/src/Solution.php b/src/Solution.php index 94f606c..30cb06a 100644 --- a/src/Solution.php +++ b/src/Solution.php @@ -3,6 +3,9 @@ namespace trizz\AdventOfCode; use JetBrains\PhpStorm\ArrayShape; +use Symfony\Component\Console\Command\Command; +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Output\OutputInterface; abstract class Solution { @@ -90,7 +93,7 @@ abstract class Solution return !empty($this->exampleData); } - #[ArrayShape(['part1' => 'int|string', 'part2' => 'int|string'])] + #[ArrayShape(['part1' => "int|string", 'part2' => "int|string"])] public function results(bool $useExampleData = true): array { $data = $useExampleData ? $this->exampleData : $this->data; diff --git a/src/Utils/Arr.php b/src/Utils/Arr.php index 3649a1c..56651ab 100644 --- a/src/Utils/Arr.php +++ b/src/Utils/Arr.php @@ -4,4 +4,5 @@ namespace AdventOfCode21\Utils; class Arr { + } diff --git a/src/Y21/Day4.php b/src/Y21/Day4.php index 9b05c7d..701ad73 100644 --- a/src/Y21/Day4.php +++ b/src/Y21/Day4.php @@ -12,22 +12,6 @@ class Day4 extends Solution public static int|string|null $part2ExampleResult = 1924; public static int|string|null $part2Result = 17435; - /** - * {@inheritdoc} - */ - public function part1(array $data): int|string - { - return $this->playBingo($data, firstWins: true); - } - - /** - * {@inheritdoc} - */ - public function part2(array $data): int|string - { - return $this->playBingo($data, firstWins: false); - } - /** * @param int[] $winningCard * @param int $number @@ -46,6 +30,22 @@ class Day4 extends Solution return (int) array_sum($unusedNumbers) * $number; } + /** + * {@inheritdoc} + */ + public function part1(array $data): int|string + { + return $this->playBingo($data, firstWins: true); + } + + /** + * {@inheritdoc} + */ + public function part2(array $data): int|string + { + return $this->playBingo($data, firstWins: false); + } + /** * @param string $numberList * @param string $separator diff --git a/src/Y21/Day6.php b/src/Y21/Day6.php index 2309e86..792af80 100644 --- a/src/Y21/Day6.php +++ b/src/Y21/Day6.php @@ -2,6 +2,7 @@ namespace trizz\AdventOfCode\Y21; +use trizz\AdventOfCode\Solution; use JetBrains\PhpStorm\Immutable; use trizz\AdventOfCode\Solution;