<?php $lines = explode("\n", file_get_contents('./input.txt')); $coolos = []; foreach ($lines as $line) { $chunks = []; $is_cool = true; foreach (str_split($line) as $chunk) { switch ($chunk) { case '(': $chunks[] = ')';break; case '[': $chunks[] = ']';break; case '{': $chunks[] = '}';break; case '<': $chunks[] = '>';break; default: $last_chunk = array_pop($chunks); if ($last_chunk !== $chunk) { $is_cool = false; break 2; } } } if ($is_cool) { $coolos[] = $chunks; } } $scores = []; foreach ($coolos as $remaining_chunks) { $remaining_chunks = array_reverse($remaining_chunks); $scores[] = array_reduce($remaining_chunks, static function ($carry, $chunk) { $additions = [ ')' => 1, ']' => 2, '}' => 3, '>' => 4, ]; $carry *= 5; $carry += $additions[$chunk]; return $carry; }); } sort($scores); echo $scores[(int) floor(count($scores) / 2)];