';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)];