-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDay1.php
44 lines (35 loc) · 1.01 KB
/
Day1.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<?php
declare(strict_types=1);
namespace App;
use App\Contracts\DayBehaviour;
use Illuminate\Support\Collection;
class Day1 extends DayBehaviour
{
public function solvePart1(): ?int
{
$depthIncreases = 0;
collect($this->input)
->sliding(2)
->eachSpread(function ($previous, $current) use (&$depthIncreases): void {
if ($current > $previous) {
++$depthIncreases;
}
});
return $depthIncreases;
}
public function solvePart2(): ?int
{
$sumIncreases = 0;
/** @var Collection|null $previous */
$previous = null;
collect($this->input)
->sliding(3)
->each(function (Collection $current) use (&$sumIncreases, &$previous): void {
if ($previous && $current->sum() > $previous->sum()) {
++$sumIncreases;
}
$previous = $current;
});
return $sumIncreases;
}
}