-
Notifications
You must be signed in to change notification settings - Fork 1
AoC 2024 Day 5
Zadowoleni ze swoich poszukiwań na Ceres, eskadra uczonych sugeruje, aby następnie przeskanować stosy artykułów piśmienniczych w piwnicy 17
.
Dział drukarski Bieguna Północnego jest bardziej zajęty niż kiedykolwiek tak blisko Bożego Narodzenia, a podczas gdy Historycy kontynuują poszukiwania tego historycznie ważnego obiektu, Elf obsługujący bardzo znajomą drukarkę przywołuje cię.
Elf musi cię rozpoznać, ponieważ nie traci czasu, tłumacząc, że nowe aktualizacje podręcznika bezpieczeństwa dotyczącego startu sań nie będą drukowane poprawnie. Niezaktualizowanie podręczników bezpieczeństwa byłoby naprawdę fatalne, więc oferujesz swoje usługi.
Protokoły bezpieczeństwa wyraźnie wskazują, że nowe strony podręczników bezpieczeństwa muszą być drukowane w bardzo określonej kolejności. Notacja X|Y
oznacza, że jeśli zarówno strona numer X
, jak i strona numer Y
mają zostać wyprodukowane jako część aktualizacji, strona numer X
musi zostać wydrukowana w pewnym momencie przed stroną numer Y
.
Elf ma dla Ciebie zarówno zasady kolejności stron, jak i strony do wyprodukowania w każdej aktualizacji (Twoje dane wejściowe układanki), ale nie może stwierdzić, czy każda aktualizacja ma strony we właściwej kolejności.
Na przykład:
47|53
97|13
97|61
97|47
75|29
61|13
75|53
29|13
97|29
53|29
61|53
97|53
61|29
47|13
75|47
97|75
47|61
75|61
47|29
75|13
53|13
75,47,61,53,29
97,61,53,29,13
75,29,13
75,97,47,61,53
61,13,29
97,13,75,29,47
Pierwsza sekcja określa reguły kolejności stron, po jednej na wiersz. Pierwsza reguła, 47|53
, oznacza, że jeśli aktualizacja obejmuje zarówno stronę numer 47
, jak i stronę numer 53
, to strona numer 47
musi zostać wydrukowana w pewnym momencie przed stroną numer 53
. (Strona 47
niekoniecznie musi znajdować się bezpośrednio przed stroną 53
; inne strony mogą znajdować się pomiędzy nimi).
Druga sekcja określa numery stron każdej aktualizacji. Ponieważ większość podręczników bezpieczeństwa jest inna, strony potrzebne w aktualizacjach również są inne. Pierwsza aktualizacja, 75,47,61,53,29
, oznacza, że aktualizacja składa się ze stron numer 75, 47, 61, 53
i 29
.
Aby jak najszybciej uruchomić drukarki, zacznij od zidentyfikowania, które aktualizacje są już we właściwej kolejności.
W powyższym przykładzie pierwsza aktualizacja (75,47,61,53,29
) jest w prawidłowej kolejności:
-
75
jest poprawnie pierwsze, ponieważ istnieją reguły, które umieszczają każdą inną stronę po niej:75|47
,75|61
,75|53
i75|29
. -
47
jest poprawnie drugie, ponieważ75
musi być przed nim (75|47
), a każda inna strona musi być po nim zgodnie z47|61
,47|53
i47|29
. -
61
jest poprawnie w środku, ponieważ75
i47
są przed nim (75|61
i47|61
), a53
i29
są po nim (61|53
i61|29
). -
53
jest poprawnie czwarte, ponieważ jest przed stroną numer29
(53|29
). -
29
jest jedyną pozostałą stroną, więc jest poprawnie ostatnie.
Ponieważ pierwsza aktualizacja nie zawiera niektórych numerów stron, zasady kolejności obejmujące brakujące numery stron są ignorowane.
Druga i trzecia aktualizacja są również w prawidłowej kolejności zgodnie z zasadami. Podobnie jak pierwsza aktualizacja, nie zawierają one również wszystkich numerów stron, więc obowiązują tylko niektóre zasady kolejności — w każdej aktualizacji zasady kolejności obejmujące brakujące numery stron nie są używane.
Czwarta aktualizacja, 75,97,47,61,53
, nie jest w prawidłowej kolejności: wydrukowałaby 75
przed 97
, co narusza zasadę 97|75
.
Piąta aktualizacja, 61,13,29
, również nie jest w prawidłowej kolejności, ponieważ łamie zasadę 29|13
.
Ostatnia aktualizacja, 97,13,75,29,47
, nie jest w prawidłowej kolejności z powodu złamania kilku zasad.
Z jakiegoś powodu Elfy muszą również znać środkowy numer strony każdej drukowanej aktualizacji. Ponieważ obecnie drukujesz tylko aktualizacje w prawidłowej kolejności, musisz znaleźć środkowy numer strony każdej aktualizacji w prawidłowej kolejności. W powyższym przykładzie aktualizacje w prawidłowej kolejności to:
75,47
,61
,53,29
97,61
,53
,29,13
75
,29
,13
Mają one odpowiednio środkowe numery stron 61
, 53
i 29
. Dodanie tych numerów stron daje 143
.
Oczywiście musisz być ostrożny: rzeczywista lista reguł kolejności stron jest większa i bardziej skomplikowana niż w powyższym przykładzie.
Określ, które aktualizacje są już w prawidłowej kolejności. Co otrzymasz, jeśli dodasz środkowy numer strony z tych aktualizacji w prawidłowej kolejności?
Podczas gdy Elfy zabierają się do drukowania prawidłowo uporządkowanych aktualizacji, Ty masz trochę czasu, aby poprawić resztę.
W przypadku każdej nieprawidłowo uporządkowanej aktualizacji użyj reguł kolejności stron, aby ustawić numery stron we właściwej kolejności. W powyższym przykładzie oto trzy nieprawidłowo uporządkowane aktualizacje i ich prawidłowa kolejność:
75,97,47,61,53
staje się 97,75
,47
,61,53
.
61,13,29
staje się 61
,29
,13
.
97,13,75,29,47
staje się 97,75
,47
,29,13
.
Po wzięciu tylko nieprawidłowo uporządkowanych aktualizacji i prawidłowym uporządkowaniu ich, ich środkowe numery stron to 47
, 29
i 47
. Dodanie ich razem daje 123
.
Znajdź aktualizacje, które nie są we właściwej kolejności. Co otrzymasz, jeśli zsumujesz numery środkowych stron po prawidłowym uporządkowaniu tylko tych aktualizacji?