Historia Advent of Code 2017
Advent of Code 2017 opowiada o epickim poszukiwaniu wewnątrz komputera, gdzie zostałeś wciągnięty przez czarodziejkę elfów, aby naprawić drukarkę Listy Niegrzecznych i Grzecznych zanim nastanie północ. Masz tylko 25 milisekund (co dla ciebie czuje się jak całe dnie) aby zebrać pięćdziesiąt gwiazdek i naprawić wszystkie systemy wewnątrz komputera!
Przebieg fabuły
Dzień 1: Pułapka w drodze[1]
Wciągnięty wewnątrz komputera przez druid czar, znajdujesz się w pokoju z napisem "Digitization Quarantine" (Kwarantanna Digitalizacji). Aby wyjść, musisz rozwiązać captchę - przeanalizować sekwencję cyfr i znaleźć sumę wszystkich cyfr, które pasują do następnej cyfry na liście (która jest cykliczna).
Dni 2-4: Systemy komputera
Elfy z księgowości mają problem - arkusz kalkulacyjny jest uszkodzony i muszą obliczyć jego sumę kontrolną. Następnie odkrywasz eksperymentalną pamięć przechowowaną w nieskończonej dwuwymiarowej siatce z wartościami ułożonymi w spirali.
Podczas wędrówki natykasz się na system haseł - okazuje się, że każde hasło to fraza składająca się ze słów bez duplikatów.
Dni 5-7: Ucieczka i systemy
CPU trafiło się w labirynt instrukcji skoków - musisz podążać za instrukcjami aż wyjdziesz poza listę, podczas gdy każdy skok zwiększa wartość offsetu o jeden.
Banki pamięci wymagają realokacji - procedura musi równoważyć bloki między bankami, ale ma nieskończoną pętlę. Musisz znaleźć, kiedy konfiguracja się powtórzy.
W cyrkowych wieżach odkrywasz strukturę wież programów - każdy program trzyma dysk z innymi programami. Musisz znaleźć program u podstawy całej struktury.
Dni 8-10: Fizyka i pamięć
Słyszysz sygnał zasilacza warunków - otrzymujesz listę instrukcji modyfikujących rejestry (warunki "jeśli" muszą być spełnione). Musisz znaleźć największą wartość w każdym rejestrze.
Przechodząc przez strumień pełen śmieci, musisz przetwarzać grupy znane jako {}</a> i śmieci oddzielone nawiasami kątowymi <>. Znaki ! anulują następny znak, musisz obliczyć całkowitą ocenę wszystkich grup.
W ostatecznym systemie magazynowania odkrywasz kod hash Knot Hash - algorytm wiążący węzły w koło ze 256 znacznikami. Musisz odwrócić sekwencje według długości na wejściu.
Dni 11-13: Problemy krzyżowe
Dziecko procesu zgubiło się na nieskończonej siatce heksagonalnej - musisz obliczyć najmniejszą liczbę kroków do dziecka.
Przechodząc przez wioskę, natykasz się na system rurowy komunikacyjny - programy się ze sobą komunikują za pośrednictwem rur. Musisz znaleźć, ile programów należy do grupy zawierającej program 0.
Natykasz się na zaporę z skanerami pakietów poruszającymi się tam i z powrotem - musisz obliczyć dotkliwość całej podróży (głębokość × zakres dla każdego przechwycenia).
Dni 14-16: Grafika i tańce
System wykonuje defragmentację dysku - musisz obliczyć hash Knot Hash dla 128 rzędów i znaleźć ilość używanych kwadratów w siatce 128x128.
Pojawia się para konkurujących generatorów - każdy wylicza liczbę stosując formułę. Musisz porównać 16 najmniej znaczących bitów obu wartości przez miliony iteracji.
W programie tańca szesnaście programów wykonuje rutynę permutacyjną z trzema typami ruchów: spin (s), wymiana (x) i partner (p).
Dni 17-20: Algorytmy i cząstki
Natykasz się na Spinlock - algorytm wkładający wartości do bufora kołowego - musisz znaleźć wartość po 2017 po ostatecznym wstawieniu.
Odkrywasz program Duet z instrukcjami assembly dla rejestrów - `snd`, `set`, `add`, `mul`, `mod`, `rcv`, `jgz` - musisz znaleźć pierwszą odzyskaną częstotliwość.
W sieciach zalewu znajdujesz sieci rur - pakiet pyta się o rozkazem - musisz obserwować, jakie litery widzi podążając za marszrutą.
GPU wysyła zaproszenie - musisz symulować rój cząstek poruszających się z pozycjami, prędkościami i przyspieszeniami - znaleźć cząstkę, która zostanie najbliżej początku.
Dni 21-23: Sztuka i obliczenia
W sztuce fraktalnej program generuje obraz poprzez rozszerzanie zgodnie z regułami - każdy kwadrat 2×2 zmienia się w 3×3 lub 3×3 zmienia się w 4×4 - musisz liczyć piksele włączone po 5 iteracjach.
Virus Sporifica porusza się po siatce, infekując i czyszcząc węzły - musisz symulować ruchy wirusa i liczyć infekcje.
Odkrywasz koreprocescor eksperymentalny z instrukcjami assembly (`set`, `sub`, `mul`, `jnz`) - musisz liczyć, ile razy instrukcja mul jest wywoływana.
Dni 24-25: Most i Maszyna Turinga
Przekraczając miastem magicznych komponentów, musisz budować most z komponentów magnetycznych o portach - każdy port ma typ (liczbę szpilek) - musisz znaleźć najsilniejszy most.
W samym sercu komputera odkrywasz Maszynę Turinga - ma taśmę, kursor i stany. Każdy stan ma reguły co robić w zależności od wartości pod kursorem - musisz emulować maszynę i obliczyć sumę kontrolną diagnostyczną**.
Podsumowanie
Historia 2017 roku to wciągnięcie wewnątrz komputera i naprawienie jego składników od wewnątrz - od prostych systemów (captcha, hasła, arkusze) przez bardziej zaawansowane (systemy pamięci, komunikacja, kryptografia, gry) do ostatecznych fundamentów (maszyna Turinga, logika, algorytmy). Musimy rozwiązać pięćdziesiąt różnych zagadek technicznych aby zebrać pięćdziesiąt gwiazdek i uratować drukarkę przed północą!