parent
68bdad57a7
commit
c1ff5f7242
1 changed files with 91 additions and 0 deletions
@ -0,0 +1,91 @@ |
|||||||
|
<?php |
||||||
|
|
||||||
|
final class Day2 extends Day { |
||||||
|
|
||||||
|
function part1(): string { |
||||||
|
$safeCount = 0; |
||||||
|
|
||||||
|
foreach ($this->input as $line){ |
||||||
|
$levels = array_map('intval', explode(' ', $line)); |
||||||
|
|
||||||
|
$isSafe = true; |
||||||
|
|
||||||
|
|
||||||
|
$direction = null; |
||||||
|
for ($i = 0; $i < count($levels) - 1; $i++){ |
||||||
|
$levelNow = $levels[$i]; |
||||||
|
$levelThen = $levels[$i + 1]; |
||||||
|
|
||||||
|
$change = abs($levelThen - $levelNow); |
||||||
|
if ($change < 1 || $change > 3){ |
||||||
|
$isSafe = false; |
||||||
|
break; |
||||||
|
} |
||||||
|
|
||||||
|
if ($direction === null){ |
||||||
|
$direction = $levelThen > $levelNow; |
||||||
|
} |
||||||
|
|
||||||
|
if ($direction !== ($levelThen > $levelNow)){ |
||||||
|
$isSafe = false; |
||||||
|
break; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
if ($isSafe) |
||||||
|
$safeCount++; |
||||||
|
} |
||||||
|
|
||||||
|
return strval($safeCount); |
||||||
|
} |
||||||
|
|
||||||
|
function part2(): string { |
||||||
|
$safeCount = 0; |
||||||
|
|
||||||
|
foreach ($this->input as $line){ |
||||||
|
$levels = array_map('intval', explode(' ', $line)); |
||||||
|
|
||||||
|
$isSafe = false; |
||||||
|
|
||||||
|
for ($removeLevelIndex = -1; $removeLevelIndex < count($levels); $removeLevelIndex++){ |
||||||
|
$localLevels = $levels; |
||||||
|
if ($removeLevelIndex > -1){ |
||||||
|
array_splice($localLevels, $removeLevelIndex, 1); |
||||||
|
} |
||||||
|
|
||||||
|
$levelSetIsSafe = true; |
||||||
|
$direction = null; |
||||||
|
for ($i = 0; $i < count($localLevels) - 1; $i++){ |
||||||
|
$levelNow = $localLevels[$i]; |
||||||
|
$levelThen = $localLevels[$i + 1]; |
||||||
|
|
||||||
|
$change = abs($levelThen - $levelNow); |
||||||
|
if ($change < 1 || $change > 3){ |
||||||
|
$levelSetIsSafe = false; |
||||||
|
break; |
||||||
|
} |
||||||
|
|
||||||
|
if ($direction === null){ |
||||||
|
$direction = $levelThen > $levelNow; |
||||||
|
} |
||||||
|
|
||||||
|
if ($direction !== ($levelThen > $levelNow)){ |
||||||
|
$levelSetIsSafe = false; |
||||||
|
break; |
||||||
|
} |
||||||
|
} |
||||||
|
if ($levelSetIsSafe){ |
||||||
|
$isSafe = true; |
||||||
|
break; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
if ($isSafe) |
||||||
|
$safeCount++; |
||||||
|
|
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
return strval($safeCount); |
||||||
|
} |
||||||
|
} |
Loading…
Reference in new issue