From f7608a8fc4c036f22c0c38a74a64d3d701c477e9 Mon Sep 17 00:00:00 2001 From: Clement Desmidt Date: Mon, 6 Dec 2021 15:31:47 +0100 Subject: [PATCH] :sparkles: Finit le jour 5 --- day_5/part_1.php | 46 +++++++++++++++++++++++++++++++ day_5/part_2.php | 72 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 118 insertions(+) create mode 100644 day_5/part_1.php create mode 100644 day_5/part_2.php diff --git a/day_5/part_1.php b/day_5/part_1.php new file mode 100644 index 0000000..3ec1acb --- /dev/null +++ b/day_5/part_1.php @@ -0,0 +1,46 @@ + (\d+),(\d+)$/', $line, $matches); + array_shift($matches); + return $matches; +}, explode("\n", file_get_contents('./input.txt'))); + +$grid = array_fill(0, 1000, array_fill(0, 1000, 0)); + +foreach ($coordinates as $coordinate) { + if (is_horizontal($coordinate)) { + $axis = $coordinate[0]; + $min = min($coordinate[1], $coordinate[3]); + $max = max($coordinate[1], $coordinate[3]); + for ($i = $min; $i <= $max; $i++) { + $grid[$axis][$i]++; + } + } elseif (is_vertical($coordinate)) { + $axis = $coordinate[1]; + $min = min($coordinate[0], $coordinate[2]); + $max = max($coordinate[0], $coordinate[2]); + for ($i = $min; $i <= $max; $i++) { + $grid[$i][$axis]++; + } + } +} + +$count = 0; +foreach ($grid as $row) { + $count += count(array_filter($row, static function($cell) { + return $cell >= 2; + })); +} + +echo $count; + +function is_horizontal($coordinate) +{ + return $coordinate[0] === $coordinate[2]; +} + +function is_vertical($coordinate) +{ + return $coordinate[1] === $coordinate[3]; +} \ No newline at end of file diff --git a/day_5/part_2.php b/day_5/part_2.php new file mode 100644 index 0000000..2a09731 --- /dev/null +++ b/day_5/part_2.php @@ -0,0 +1,72 @@ + (\d+),(\d+)$/', $line, $matches); + array_shift($matches); + return $matches; +}, explode("\n", file_get_contents('./input.txt'))); + +$grid = array_fill(0, 1000, array_fill(0, 1000, 0)); + +foreach ($coordinates as $coordinate) { + if (is_horizontal($coordinate)) { + $axis = $coordinate[0]; + $min = min($coordinate[1], $coordinate[3]); + $max = max($coordinate[1], $coordinate[3]); + for ($i = $min; $i <= $max; $i++) { + $grid[$axis][$i]++; + } + } elseif (is_vertical($coordinate)) { + $axis = $coordinate[1]; + $min = min($coordinate[0], $coordinate[2]); + $max = max($coordinate[0], $coordinate[2]); + for ($i = $min; $i <= $max; $i++) { + $grid[$i][$axis]++; + } + } else { + $x_a = $coordinate[0]; + $y_a = $coordinate[1]; + $x_b = $coordinate[2]; + $y_b = $coordinate[3]; + if ($x_a < $x_b) { + if ($y_a < $y_b) { + for ($i = 0; $i <= $x_b - $x_a; $i++) { + $grid[$x_a + $i][$y_a + $i]++; + } + } else { + for ($i = 0; $i <= $x_b - $x_a; $i++) { + $grid[$x_a + $i][$y_a - $i]++; + } + } + } else { + if ($y_a < $y_b) { + for ($i = 0; $i <= $x_a - $x_b; $i++) { + $grid[$x_a - $i][$y_a + $i]++; + } + } else { + for ($i = 0; $i <= $x_a - $x_b; $i++) { + $grid[$x_a - $i][$y_a - $i]++; + } + } + } + } +} + +$count = 0; +foreach ($grid as $row) { + $count += count(array_filter($row, static function($cell) { + return $cell >= 2; + })); +} + +echo $count; + +function is_horizontal($coordinate) +{ + return $coordinate[0] === $coordinate[2]; +} + +function is_vertical($coordinate) +{ + return $coordinate[1] === $coordinate[3]; +} \ No newline at end of file