Skip to content

Commit 9fc9df9

Browse files
committed
add a stub generator and switch to pint for syntax
1 parent b7a25d8 commit 9fc9df9

23 files changed

+325
-46
lines changed

Makefile

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,9 @@ cleanup: ## remove all docker images
103103
cs-fix: ## run php-cs-fixer
104104
$(DOCKER_RUN) $(image-name) composer --no-cache run cs-fixer
105105
106+
pint: ## run php-cs-fixer
107+
$(DOCKER_RUN) $(image-name) composer --no-cache run pint
108+
106109
phpstan: ## run phpstan
107110
$(DOCKER_RUN) $(image-name) composer run phpstan
108111
@@ -117,7 +120,14 @@ endif
117120
define DAY_TEMPLATE
118121
<?php\n\ndeclare(strict_types=1);\n\nnamespace App;\n\nuse App\Contracts\DayBehaviour;\n\nclass Day$(nextDay) extends DayBehaviour\n{\n public function solvePart1(): ?int\n {\n // TODO: Implement solvePart1() method.\n return null;\n }\n\n public function solvePart2(): ?int\n {\n // TODO: Implement solvePart2() method.\n return null;\n }\n}\n
119122
endef
120-
next: ## Generates the next days PHP files
123+
next:
124+
@echo "Creating next day's file..."
125+
@next_day=$$(ls src/Days | grep -oE 'Day[0-9]+' | sort -V | tail -n 1 | sed 's/Day//'); \
126+
next_day=$$(( $$next_day + 1 )); \
127+
sed "s/DayX/Day$$next_day/g" stub/DayX.php.stub > src/Days/Day$$next_day.php; \
128+
echo "Created src/Days/Day$$next_day.php"
129+
make get-input
130+
next2: ## Generates the next days PHP files
121131
ifneq ("$(wildcard src/Day$(nextDay).php)","")
122132
@echo -e "The file: src/Day$(nextDay).php already exists...\n"
123133
else

composer.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,8 @@
1717
"require-dev": {
1818
"phpstan/phpstan": "^1.4",
1919
"friendsofphp/php-cs-fixer": "v3.13.1",
20-
"symplify/phpstan-extensions": "^10.3.3"
20+
"symplify/phpstan-extensions": "^10.3.3",
21+
"laravel/pint": "^1.17"
2122
},
2223
"autoload": {
2324
"psr-4": {
@@ -26,6 +27,7 @@
2627
},
2728
"scripts": {
2829
"cs-fixer": "vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php",
30+
"pint": "vendor/bin/pint",
2931
"phpstan": "phpstan analyse --ansi --memory-limit=1G"
3032
},
3133
"minimum-stability": "stable",

composer.lock

Lines changed: 67 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

input/day12.txt

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
abaaacccccccccaaaaaaccccccccccccccccaacccccccccccaacaaaaaaaaaaaaaaaaaccaaaaacccaaaaccccccccccccccccccccccccccccccccccccccccccccccccccccccccaaaaa
2+
abaaacccccccccaaaaaacccccccccccccccaaaaccccccccccaaaaaaaacaaaaaaaaaaaccaaaaaaccaaaacccccccccccccccccccccccccccccccccccccccccccccccccccccccaaaaaa
3+
abaaaccccccccccaaaaacccccccccccccccaaaacccccccccccaaaaacccaaaaaaaaaacccaaaaaacccaaccccccccccccccaaaaacccccccccccccccccccccccccccccccccccccaaaaaa
4+
abccccaaccccccaaaaacccccccccaaaaaccaaaaccccccccccccaaaaacaaaaaaaaacccccaaaaaccccccccccccccccccccaaaaacccccccccccccccccaaaccccaaaccccccccccaaacaa
5+
abcccaaaacccccaaaaacccccccccaaaaacccccccccccccccccaaacaaaaaaaaaacccccccaaaaacccccccccccccccccccaaaaaacccccccccccccccccaaaaccaaaaccccccccccccccaa
6+
abcccaaaaacacccccccccccccccaaaaaaccccccccccccccccccaaccaaaaacaaaaccccccccccccccccccccccccccccccaaaaaaccccccccccccccccccaaaaaaaacccccccccccccccaa
7+
abaaaaaaaaaacccccccccccccccaaaaaaccccccccccccccccccccccaaaacccaaaccccccccccccccccccccccccccccccaaaaaacccccccccccccccciiiiijaaaaccccccccccccccccc
8+
abaaaaaaaaaacccccccccccccccaaaaaacccccccccccccccccccccccccccccaaacccccccccccccccccccccccccccccccaaaccccccccccccccccciiiiiijjjaccccccccaaaccccccc
9+
abccaaaaaaccccccccccccccccccaaaccccccccccccccccccccccccccccccccacccccccccccaacccccccccccccccccccccccccccccccccccccciiiiioijjjjaaccccccaaaaaacccc
10+
abccaaaaaacccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccaaaaaacccccccccccccccccccccccccccccccccccciiinnooojjjjjaaccaaaaaaaacccc
11+
abccaaaaaacccccccccccccccccccccccccccccccccccccaacccccaacccccccccccccccccaaaaaacccccccccccccccccccccccccccaaaccccciiinnnoooojjjjjjkkkaaaaaaacccc
12+
abcaaaaaaaaccccccccccccccccccccccccccccccccccccaaaccaaaaaaccccaaacccccccccaaaacccccccccccccccccccccccccccccaaaaccciiinnnouooojjjjkkkkkaaaaaccccc
13+
abccaccccccccccccccccccaaccccccaccccccccccccaaaaaaaaaaaaaacccaaaacccccccccaaaacccccccccccccccccccccccccccaaaaaacchhinnnttuuooooookkkkkkkaaaccccc
14+
abccccccccccccccccccaacaaaccccaaaaaaaaccccccaaaaaaaacaaaaacccaaaacccccccccaccacccccccccccccccccccccccccccaaaaacchhhhnntttuuuooooppppkkkkcaaacccc
15+
abccccccccaaacccccccaaaaaccccccaaaaaaccccccccaaaaaacaaaaaccccaaaaccccccccccccccccccccccccccccaccccccccccccaaaaahhhhnnntttxuuuooppppppkkkcccccccc
16+
abccccccccaaaacccccccaaaaaaccccaaaaaaccaaacccaaaaaacaaaaaccccccccccccccaaccccccccccccccaaaaaaaacccccccccccaachhhhhnnnntttxxuuuuuuuupppkkkccccccc
17+
abccccccccaaaacccccaaaaaaaacccaaaaaaaacaaacacaaaaaaccccccccccccccccccccaacccccccccccccccaaaaaacccccccccccccchhhhmnnnntttxxxxuuuuuuupppkkcccccccc
18+
abacccccccaaaacccccaaaaacaaccaaaaaaaaaaaaaaaaaaccaacccccccccccccccccaaaaaaaaccccccccccccaaaaaaccccccccccccchhhhmmmntttttxxxxuyyyuvvpppklcccccccc
19+
abacccccccccccccccccacaaaccaaaaaaaaaaaaaaaaaaaccccccccccccccccccccccaaaaaaaacccccccccccaaaaaaaaccccccccccccgghmmmtttttxxxxxxyyyyvvvpplllcccccccc
20+
abaccccccccaacccccccccaaaccaaaaaaaacaaaaaaaaaaccccccccccccccccccccccccaaaaccccccccccccaaaaaaaaaaccccccaccccgggmmmtttxxxxxxxyyyyyvvppplllcccccccc
21+
SbaaaccccccaaacaaaccccccccaaaaaaaaacaaaaaaaaacccccccccccccccccccccccccaaaaacccccccccccaaaaaaaaaaaaacaaaccaagggmmmtttxxxEzzzzyyyvvppplllccccccccc
22+
abaacccccccaaaaaaacccccccaaaaaaacaaccaaaaaaaccccccccccccccaaaccccccccaaaaaacccccccccccacacaaacccaaaaaaacaaagggmmmsssxxxxxyyyyyvvvqqqlllccccccccc
23+
abaccccccccaaaaaaccacccaaaaaaaaacccccccaaaaaaccccccccccccaaaaccccccccaaccaacccccccccccccccaaaccccaaaaaaccaagggmmmssssxxwwyyyyyyvvqqqlllccccccccc
24+
abaccccccaaaaaaaaccaacaaaccaaaaaacccccaaaaaaaccccccccccccaaaaccccccccccaacccccccccccccccccaacccccaaaaaaaaaaggggmmmssssswwyywyyyyvvqqlllccccccccc
25+
abaccccccaaaaaaaaacaaaaacccaaaaaacccccaaacaaaccccccccccccaaaaccccccccaaaaaaccccccccccccaacccccccaaaaaaaaaaaaggggmmmossswwyywwyyvvvqqqllccccccccc
26+
abcccccccaaaaaaaaaacaaaaaacaaccccccccaaacccccccccccccccccccccccccccccaaaaaaccccccccccccaaaaacccaaaaaaaaaaaaaaggggoooosswwywwwwvvvvqqqmlccccccccc
27+
abccccccccccaaacaaaaaaaaaacccccccccccaaacaccccccccccccccccccccccccccccaaaaccccccccccccaaaaaccccaaacaaacccaaacagggfooosswwwwwrvvvvqqqqmmccccccccc
28+
abccccccccccaaacccaaaaaaaacccccccccaacaaaaacccccccccccccccccccccccccccaaaaccccccccccccaaaaaacccccccaaacccaaccccfffooosswwwwrrrrrqqqqqmmccccccccc
29+
abccccccccccaacccccccaaccccccccccccaaaaaaaacccccccccccccaaccccccccccccaccaccccccccccccccaaaacccccccaacccccccccccfffoossrwrrrrrrrqqqqmmmccccccccc
30+
abccaaaccccccccccccccaacccccccccccccaaaaaccccccccccccaacaacccccccaaaaacccccccccccccccccaacccccccccccccccccccccccfffoossrrrrrnnnmqqmmmmmccccccccc
31+
abcaaaaccccccccccccccccccccccccccccccaaaaacccccccccccaaaaacccccccaaaaacccaaaccccccccccccccccccccccccccccccccccccfffooorrrrrnnnnmmmmmmmccccaacccc
32+
abcaaaacccccccccccccccccccccccccccccaaacaaccccacccccccaaaaaaccccaaaaaaccccaaaccacccccccccccccccccccccccccccccccccffoooonnnnnnnnmmmmmmccccaaacccc
33+
abccaaacccccccccccccccccccccaaaaaccccaaccccaaaacccccaaaaaaaaccccaaaaaaccccaaaaaaaccccccccccccccccaccaccccccccccccfffooonnnnnnddddddddcccaaaccccc
34+
abccccccccccccccccccccccccccaaaaaccccccccccaaaaaacccaaaaacaacccaaaaaaaccaaaaaaaacccccccccccccccccaaaaccccccccccccfffeonnnnneddddddddddcaaacccccc
35+
abccccccccccaaaccccccccccccaaaaaacccccccccccaaaacccccacaaacccccaacaacccaaaaaaaaacccccccccccccccccaaaacccccccccccccffeeeeeeeeddddddddcccaaacccccc
36+
abcccccccccaaaaccccacccccccaaaaaaccccccccccaaaaacccccccaaaacccaaacaccccaaaaaaaaaccccccccccccccccaaaaaaccccccccccccceeeeeeeeedacccccccccccccccccc
37+
abaccccccccaaaaccccaaacaaacaaaaaaccccccccccaacaaccccccccaaaacaaaacaaacaaaaaaaaaacccccccccccccaacaaaaaacccccccccccccceeeeeeeaaacccccccccccccccaaa
38+
abaaacccccccaaaccccaaaaaaaccaaaccccccccaaacccccccccccccccaaaaaaaacaaaaaaaaaaaaaaacacaaccaaacaaacccaacccccccccccccccccaacccaaaacccccccccccccccaaa
39+
abaaaccccccccccccccaaaaaaccccccccccccccaaacccccccccccccccaaaaaaaccaaaaaaccaacccaccaaaaccaaaaaaaccccccccaaccccccccccccccccccaaacccccccccccccccaaa
40+
abaaccccccccccccccaaaaaaacccccccccccaaaaaaaaccccccccccccccaaaaaaaaaaaaaacaaaccccccaaaaaccaaaaaaccccccaaaaccccccccccccccccccaaaccccccccccccaaaaaa
41+
abaaaccccccccccccaaaaaaaaaacccccccccaaaaaaaacccccccccccaaaaaaaaaaaaaaaaaaacccccccaaaaaacaaaaaaaaaccccaaaaaacccccccccccccccccccccccccccccccaaaaaa

pint.json

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
{
2+
"preset": "psr12",
3+
"rules": {
4+
"align_multiline_comment": true,
5+
"array_indentation": true,
6+
"array_syntax": true,
7+
"blank_line_after_namespace": true,
8+
"blank_line_after_opening_tag": true,
9+
"combine_consecutive_issets": true,
10+
"combine_consecutive_unsets": true,
11+
"concat_space": true,
12+
"declare_parentheses": true,
13+
"declare_strict_types": false,
14+
"explicit_string_variable": true,
15+
"final_class": false,
16+
"final_internal_class": false,
17+
"fully_qualified_strict_types": false,
18+
"global_namespace_import": {
19+
"import_classes": true,
20+
"import_constants": true,
21+
"import_functions": true
22+
},
23+
"binary_operator_spaces": {
24+
"default": "align_single_space_minimal"
25+
},
26+
"is_null": true,
27+
"lambda_not_used_import": true,
28+
"mb_str_functions": true,
29+
"method_chaining_indentation": true,
30+
"modernize_strpos": true,
31+
"new_with_braces": true,
32+
"no_empty_comment": true,
33+
"not_operator_with_space": false,
34+
"ordered_traits": true,
35+
"protected_to_private": false,
36+
"simplified_if_return": true,
37+
"strict_comparison": true,
38+
"ternary_to_null_coalescing": true,
39+
"trim_array_spaces": true,
40+
"use_arrow_functions": true,
41+
"void_return": true,
42+
"yoda_style": true,
43+
"logical_operators": true,
44+
"not_operator_with_successor_space": false
45+
},
46+
"notPath": [
47+
]
48+
}

run.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
* -p,--part PATTERN Only run parts that match pattern (range or comma-separated list)
88
* -e,--examples Runs the examples
99
* -h,--help This help message
10-
10+
*
1111
* php run.php --day=[day] --part=[part] --examples
1212
* [day] = optional - The day(s) to run. Can be a range (1-10) or comma-separated (1,2,5) including combination of both.
1313
* [part] = optional - The part to run

src/Contracts/Day.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
namespace App\Contracts;
66

77
use Illuminate\Support\Collection;
8+
use ReflectionClass;
89

910
abstract class Day implements DayInterface
1011
{
@@ -52,6 +53,6 @@ protected function parseInput(mixed $input): Collection
5253
*/
5354
final public function day(): string
5455
{
55-
return (new \ReflectionClass($this))->getShortName();
56+
return (new ReflectionClass($this))->getShortName();
5657
}
5758
}

src/DayFactory.php

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@
77
use App\Contracts\Day;
88
use App\Runner\Exceptions\DayClassNotFoundException;
99
use App\Runner\Exceptions\DayInputNotFoundException;
10+
use Error;
11+
use Exception;
12+
use Generator;
1013

1114
class DayFactory
1215
{
@@ -33,13 +36,13 @@ public function create(int $dayNumber): Day
3336
return new $dayClassName($dayInput);
3437
}
3538

36-
public function allAvailableDays(): \Generator
39+
public function allAvailableDays(): Generator
3740
{
3841
foreach (range(1, static::MAX_DAYS) as $dayNumber) {
3942
try {
4043
$day = $this->create($dayNumber);
4144
yield $day;
42-
} catch (\Exception|\Error) {
45+
} catch (Exception|Error) {
4346
break; // ignore days we haven't solved yet
4447
}
4548
}

src/Days/Day1.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,9 +45,9 @@ public function solvePart2(mixed $input): int|string|null
4545
$input = $this->parseInput($input);
4646

4747
return $input->map(fn ($chunk) => $chunk->sum())
48-
->sortDesc()
49-
->take(3)
50-
->sum();
48+
->sortDesc()
49+
->take(3)
50+
->sum();
5151
}
5252

5353
protected function parseInput(mixed $input): Collection

src/Days/Day10.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -227,7 +227,7 @@ public function solvePart2(mixed $input): string
227227

228228
$renderedCrt = implode("\n", array_map(fn (array $row) => implode('', $row), $crt));
229229

230-
printf("\n%s\n", $renderedCrt);
230+
printf("%s\n", $renderedCrt);
231231
/*
232232
* outputs
233233
* ###...##..#..#.####..##..#....#..#..##..

0 commit comments

Comments
 (0)