#!/usr/bin/env nix-shell count(array_intersect($v, $printItems)), $dependencies); $queue = array_keys(array_filter($remainingDependencies, fn ($c) => $c == 0)); $sortedPages = []; while (!empty($queue)) { $current = array_shift($queue); $sortedPages[] = $current; foreach ($dependents[$current] ?? [] as $dependent) { $remainingDependencies[$dependent]--; if ($remainingDependencies[$dependent] == 0) { $queue[] = $dependent; } } } $sortedPrintItems = array_values(array_filter($sortedPages, fn($item) => in_array($item, $printItems))); $part2 += $sortedPrintItems[(count($sortedPrintItems) - 1) / 2]; } var_dump($part2);