✨ Finit le jour 2 et commence le 1 et le 3
This commit is contained in:
28
day_2/part_1.php
Normal file
28
day_2/part_1.php
Normal file
@@ -0,0 +1,28 @@
|
||||
<?php
|
||||
|
||||
$intervals = array_map(fn($interval) => explode('-', $interval), explode(',', file_get_contents('./input.txt')));
|
||||
|
||||
$invalids = [];
|
||||
|
||||
foreach ($intervals as $interval) {
|
||||
[$start, $end] = $interval;
|
||||
$current = $start;
|
||||
while ($current <= $end) {
|
||||
if (is_invalid($current)) {
|
||||
$invalids[] = $current;
|
||||
}
|
||||
|
||||
$current++;
|
||||
}
|
||||
}
|
||||
|
||||
function is_invalid($current): bool {
|
||||
if (strlen($current) % 2 !== 0) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$middle = strlen($current) / 2;
|
||||
return substr($current, 0, $middle) === substr($current, $middle);
|
||||
}
|
||||
|
||||
echo array_sum($invalids);
|
||||
37
day_2/part_2.php
Normal file
37
day_2/part_2.php
Normal file
@@ -0,0 +1,37 @@
|
||||
<?php
|
||||
|
||||
$intervals = array_map(fn($interval) => explode('-', $interval), explode(',', file_get_contents('./input.txt')));
|
||||
|
||||
$invalids = [];
|
||||
|
||||
foreach ($intervals as $interval) {
|
||||
[$start, $end] = $interval;
|
||||
$current = $start;
|
||||
while ($current <= $end) {
|
||||
if (is_invalid($current)) {
|
||||
$invalids[] = $current;
|
||||
}
|
||||
|
||||
$current++;
|
||||
}
|
||||
}
|
||||
|
||||
function is_invalid(string $current): bool {
|
||||
for ($i = 1, $l = strlen($current); $i < $l; $i++) {
|
||||
$parts = str_split($current, $i);
|
||||
$is_equals = true;
|
||||
for ($j = 0, $m = count($parts) - 1; $j < $m; $j++) {
|
||||
if ($parts[$j] !== $parts[$j + 1]) {
|
||||
$is_equals = false;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
if ($is_equals) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
echo array_sum($invalids);
|
||||
Reference in New Issue
Block a user