Skip to content

Commit c3d08f8

Browse files
clean up day 2 a bit
1 parent 114b9da commit c3d08f8

File tree

2 files changed

+18
-22
lines changed

2 files changed

+18
-22
lines changed

2024-php/01.php

+2-2
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,8 @@
3333
$pt2 += $a[$i] * $occurs;
3434
}
3535

36-
echo "Day 1: Historian Hysteria", PHP_EOL;
36+
echo "--- Day 1: Historian Hysteria ---", PHP_EOL;
3737
echo "Part 1: ", $pt1, PHP_EOL;
38-
echo "Part 1: ", $pt2, PHP_EOL;
38+
echo "Part 2: ", $pt2, PHP_EOL;
3939
echo "Took ", microtime(true) - $time_start, " seconds", PHP_EOL;
4040
echo PHP_EOL;

2024-php/02.php

+16-20
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
<?php
22
$time_start = microtime(true);
33

4-
function is_safe($numbers): bool
4+
function is_safe(array $numbers): bool
55
{
6-
$diffs = [];
6+
$diff_prev = 0;
77
for ($i = 1; $i < count($numbers); $i++) {
88
$diff = $numbers[$i] - $numbers[$i - 1];
99

@@ -12,18 +12,12 @@ function is_safe($numbers): bool
1212
return false;
1313
}
1414

15-
$diffs[] = $diff;
16-
}
17-
18-
// sign of each diff must be the same as all other elements
19-
for ($i = 1; $i < count($diffs); $i++) {
20-
if ($diffs[$i] > 0 && $diffs[$i-1] < 0) {
15+
// sign of each diff must match preceding diff
16+
if ($i >= 2 && $diff > 0 != $diff_prev > 0) {
2117
return false;
2218
}
2319

24-
if ($diffs[$i] < 0 && $diffs[$i-1] > 0) {
25-
return false;
26-
}
20+
$diff_prev = $diff;
2721
}
2822

2923
return true;
@@ -38,15 +32,17 @@ function is_safe($numbers): bool
3832
if (is_safe($numbers)) {
3933
$pt1++;
4034
$pt2++;
41-
} else {
42-
for ($i = 0; $i < count($numbers); $i++) {
43-
$copy = $numbers;
44-
unset($copy[$i]);
45-
$copy = array_values($copy);
46-
if (is_safe($copy)) {
47-
$pt2++;
48-
break;
49-
}
35+
continue;
36+
}
37+
38+
// for part 2, brute-force remove each number and see if safe
39+
for ($i = 0; $i < count($numbers); $i++) {
40+
$copy = $numbers;
41+
unset($copy[$i]);
42+
$copy = array_values($copy);
43+
if (is_safe($copy)) {
44+
$pt2++;
45+
break;
5046
}
5147
}
5248
}

0 commit comments

Comments
 (0)