Readme
This commit is contained in:
18
03/part1.php
18
03/part1.php
@@ -2,18 +2,10 @@
|
|||||||
|
|
||||||
$input = file('input', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
|
$input = file('input', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
|
||||||
$input = array_map(fn($line) => str_split($line), $input);
|
$input = array_map(fn($line) => str_split($line), $input);
|
||||||
|
$gamma = $epsilon = [];
|
||||||
$o2 = $co2 = $input;
|
|
||||||
|
|
||||||
for ($i = 0; $i < count($input[0]); $i++) {
|
for ($i = 0; $i < count($input[0]); $i++) {
|
||||||
if (count($o2) > 1) {
|
$bit = (int) (array_sum($column = array_column($input, $i)) >= ceil(count($column) / 2));
|
||||||
$bit = (int)(array_sum($column = array_column($o2, $i)) >= ceil(count($column) / 2));
|
$gamma[] = $bit;
|
||||||
$o2 = array_filter($o2, fn($line) => $line[$i] == $bit);
|
$epsilon[] = ~$bit & 1;
|
||||||
}
|
}
|
||||||
|
echo bindec(implode('', $gamma)) * bindec(implode('', $epsilon)).PHP_EOL; //3813416
|
||||||
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('', reset($co2))) * bindec(implode('', reset($o2)));
|
|
||||||
|
|||||||
18
03/part2.php
18
03/part2.php
@@ -2,10 +2,18 @@
|
|||||||
|
|
||||||
$input = file('input', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
|
$input = file('input', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
|
||||||
$input = array_map(fn($line) => str_split($line), $input);
|
$input = array_map(fn($line) => str_split($line), $input);
|
||||||
$gamma = $epsilon = [];
|
|
||||||
|
$o2 = $co2 = $input;
|
||||||
|
|
||||||
for ($i = 0; $i < count($input[0]); $i++) {
|
for ($i = 0; $i < count($input[0]); $i++) {
|
||||||
$bit = (int) (array_sum($column = array_column($input, $i)) >= ceil(count($column) / 2));
|
if (count($o2) > 1) {
|
||||||
$gamma[] = $bit;
|
$bit = (int)(array_sum($column = array_column($o2, $i)) >= ceil(count($column) / 2));
|
||||||
$epsilon[] = ~$bit & 1;
|
$o2 = array_filter($o2, fn($line) => $line[$i] == $bit);
|
||||||
}
|
}
|
||||||
echo bindec(implode('', $gamma)) * bindec(implode('', $epsilon)).PHP_EOL;
|
|
||||||
|
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('', reset($co2))) * bindec(implode('', reset($o2))); //2990784
|
||||||
Reference in New Issue
Block a user