diff --git a/14/part1.php b/14/part1.php new file mode 100644 index 0000000..4925e76 --- /dev/null +++ b/14/part1.php @@ -0,0 +1,22 @@ + ', $item); + $pairs[$line[0]] = $line[1]; +} + + +$newTemplate = $template; +for ($j = 0; $j < 10; $j++) { + $tmpTemplate = $newTemplate; + for ($i = 0; $i < strlen($tmpTemplate) - 1; $i++) { + $window = substr($tmpTemplate, $i, 2); + $newTemplate = substr_replace($newTemplate, $pairs[$window], $i + 1 + $i, 0); + } +} +$characters = array_count_values(str_split(($newTemplate))); +sort($characters); +echo array_pop($characters) - array_shift($characters); //2549 + diff --git a/14/part2.php b/14/part2.php new file mode 100644 index 0000000..3c05a2a --- /dev/null +++ b/14/part2.php @@ -0,0 +1,39 @@ + ', $item); + $mapings[$line[0]] = $line[1]; + $initialMappings[$line[0]] = 0; +} + +for ($step = 1; $step <= 40; $step++) { + $after = $initialMappings; + foreach ($before as $pair => $count) { + $left = $pair[0] . $mapings[$pair]; + $right = $mapings[$pair] . $pair[1]; + $after[$left] += $count; + $after[$right] += $count; + } + $before = $after; +} +$letters = []; +foreach ($before as $pair => $count) { + $left = $pair[0]; + if (!isset($letters[$left])) { + $letters[$left] = 0; + } + $letters[$left] += $count; +} +$letters[substr($template, -1)] += 1; +sort($letters); + +echo array_pop($letters) - array_shift($letters); //2516901104210 diff --git a/README.md b/README.md index 12d03b0..8dc8aac 100644 --- a/README.md +++ b/README.md @@ -63,4 +63,9 @@ ### DAY 13 - Folding paper - [part1](13/part1.php) -- [part2](13/part2.php) \ No newline at end of file +- [part2](13/part2.php) + +### DAY 14 - Polymeric lanternfish + +- [part1](14/part1.php) +- [part2](14/part2.php) \ No newline at end of file