diff --git a/03/part1.php b/03/part1.php index ada3330..6fcc241 100644 --- a/03/part1.php +++ b/03/part1.php @@ -2,18 +2,10 @@ $input = file('input', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); $input = array_map(fn($line) => str_split($line), $input); - -$o2 = $co2 = $input; - +$gamma = $epsilon = []; for ($i = 0; $i < count($input[0]); $i++) { - if (count($o2) > 1) { - $bit = (int)(array_sum($column = array_column($o2, $i)) >= ceil(count($column) / 2)); - $o2 = array_filter($o2, fn($line) => $line[$i] == $bit); - } - - if (count($co2) > 1) { - $bit = (int) (array_sum($column = array_column($co2, $i)) >= ceil(count($column) / 2)); - $co2 = array_filter($co2, fn ($line) => $line[$i] != $bit); - } + $bit = (int) (array_sum($column = array_column($input, $i)) >= ceil(count($column) / 2)); + $gamma[] = $bit; + $epsilon[] = ~$bit & 1; } -echo bindec(implode('', reset($co2))) * bindec(implode('', reset($o2))); \ No newline at end of file +echo bindec(implode('', $gamma)) * bindec(implode('', $epsilon)).PHP_EOL; //3813416 diff --git a/03/part2.php b/03/part2.php index d40b7bb..1fb83ff 100644 --- a/03/part2.php +++ b/03/part2.php @@ -2,10 +2,18 @@ $input = file('input', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); $input = array_map(fn($line) => str_split($line), $input); -$gamma = $epsilon = []; + +$o2 = $co2 = $input; + for ($i = 0; $i < count($input[0]); $i++) { - $bit = (int) (array_sum($column = array_column($input, $i)) >= ceil(count($column) / 2)); - $gamma[] = $bit; - $epsilon[] = ~$bit & 1; + if (count($o2) > 1) { + $bit = (int)(array_sum($column = array_column($o2, $i)) >= ceil(count($column) / 2)); + $o2 = array_filter($o2, fn($line) => $line[$i] == $bit); + } + + if (count($co2) > 1) { + $bit = (int) (array_sum($column = array_column($co2, $i)) >= ceil(count($column) / 2)); + $co2 = array_filter($co2, fn ($line) => $line[$i] != $bit); + } } -echo bindec(implode('', $gamma)) * bindec(implode('', $epsilon)).PHP_EOL; +echo bindec(implode('', reset($co2))) * bindec(implode('', reset($o2))); //2990784 \ No newline at end of file diff --git a/README.md b/README.md index e8f4ea2..f00d616 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,16 @@ # advent_of_code_2021 +### DAY 1 + +- [part1](01/part1.php) +- [part2](01/part2.php) + +### DAY 2 + +- [part1](02/part1.php) +- [part2](02/part2.php) + +### DAY 3 + +- [part1](03/part1.php) +- [part2](03/part2.php) \ No newline at end of file