Podsumowanie Advent of Code 2019
• tech • 790 słów • 4 minuty czytania
Dzisiaj, po rozwiązaniu ostatniego zadania, z sukcesem zakończyłem tegoroczną (moją pierwszą) edycję Advent of Code.
Congratulations! You’ve finished every puzzle in Advent of Code 2019! I hope you had as much fun solving them as I had making them for you. I’d love to hear about your adventure; you can get in touch with me via contact info on my website or through Twitter.
Zatem przyszła pora na kilka zdań krótkiego podsumowania.
Zdecydowałem się na rozwiązywanie zadań w języku C++ i wszystkie programy wrzucać do adwentowego repozytorium, a tutaj na blogu zamieszczać krótki opis przyjętego sposobu rozwiązania wraz z jakimiś uwagami. Niestety z braku czasu, nie wszystkie kody i notki są w tej chwili dostępne publicznie, mam nadzieję, że wkrótce się to zmieni.
Chociaż nie zależało mi na rankingu, a tym bardziej na czasie, to jednak starałem się na bieżąco rozwiązywać zadania każdego dnia. Poniżej prywatne statystyki z mojego udziału w tej zabawie.
------- Part 1 ------- ------- Part 2 ------- Day Time Rank Score Time Rank Score Links ----------------------------------------------------------------------- 1 09:27:36 13009 0 10:04:36 12098 0 task post code 2 04:25:37 9057 0 04:55:06 8018 0 task post code 3 08:28:18 10459 0 09:37:10 9129 0 task post code 4 03:40:35 9484 0 05:11:04 9844 0 task post code 5 05:45:18 6654 0 06:00:07 5555 0 task post code 6 04:36:16 6839 0 05:16:10 6218 0 task post code 7 06:17:16 6297 0 18:18:19 7933 0 task post code 8 05:40:18 7208 0 14:26:58 11325 0 task post code 9 03:30:29 3298 0 03:31:07 3238 0 task post code 10 06:02:33 4702 0 14:31:20 5345 0 task post code 11 03:55:00 3464 0 03:58:01 3189 0 task post code 12 04:16:57 4313 0 07:35:29 2995 0 task post code 13 03:44:04 4170 0 04:33:42 2676 0 task post code 14 13:31:24 3956 0 14:26:02 3475 0 task post code 15 14:45:11 3868 0 15:14:00 3583 0 task post code 16 04:29:15 3093 0 09:22:11 1791 0 task post code 17 04:01:35 2812 0 07:07:55 1729 0 task post code 18 07:27:02 785 0 09:17:02 605 0 task post code 19 03:44:16 2239 0 05:15:43 1686 0 task post code 20 07:05:01 1666 0 09:22:04 1257 0 task post code 21 06:10:02 1644 0 07:23:36 1441 0 task post code 22 06:33:50 2093 0 15:24:56 1166 0 task post code 23 04:03:02 1294 0 04:53:23 1263 0 task post code 24 19:16:14 3359 0 >24h 2968 0 task post code 25 >24h 2954 0 >24h 1977 0 task post code
Jak przewidywałem, rozwiązanie dwóch ostatnich zadań z okolic świąt z wiadomych przyczyn musiałem zostawić na okres poświąteczny. Chociaż miałem nadzieję, że znajdę chwilkę i spróbuję się z nimi zmierzyć. Ale po wigilijnej pierwszej części, do której zasiadłem gdzieś w nocy uznałem, że to jednak nie ma sensu i trzeba się wyspać ;)
Zadania w istocie nie były takie trudne na jakie wyglądały przy pierwszym spojrzeniu. W większości udawało mi się je rozwiązywać prostymi, naiwnymi algorytmami (brute-force). Czasami jednak trzeba było znaleźć jakiś sposób na optymalizację, bo naiwne obliczenia i/lub iteracje mogłyby potrwać dni i lata. Przydawała się ogólna wiedza z algorytmów, grafów, matematyki i innych dziedzin, której mi oczywiście trochę brakowało. Nigdy zbytnio takie tematy mnie nie pociągały, a tym bardziej w normalnej, codziennej pracy deweloperskiej rzadko bywają potrzebne.
Dlatego jestem z siebie niezmiernie zadowolony, że jako osobnik bez większego doświadczenia i styczności z algorytmiką i problematyką zawartą w zadaniach udało mi się je wszystkie rozwiązać. Nie ukrywam, że niektóre wymagały specyficznej (specjalistycznej) wiedzy (i doświadczenia) i w kilku takich przypadkach skorzystałem z małych podpowiedzi innych. Nie omieszkałem się, jeśli miało to miejsce, nie wspomnieć o tym fakcie w opisach rozwiązań.
Udało mi się trochę odświeżyć wiedzę, idiomy C++, modern C++ i wreszcie bez skrępowania wykorzystać, niektóre nie tak nowe już, elementy tego języka (głównie C++17). Bo jak już wiadomo (wspominałem w notatce inicjującej), ostatnio w mojej pracy głównie zajmowałem się analizowaniem, debugowaniem i inżynierią wsteczną w dużo większym stopniu niż samym programowaniem. A tak chociaż na krótko udało mi się wrócić do korzeni i dobrej zabawy z kodem ;)
Na początku myślałem, że góra 1-3 godziny zajmie mi ogarnięcie zadania. Szczególnie widząc jak niektórzy (starzy wyjadacze takich eventów) w kilka minut rozwalali problem. Jednak nie zawsze było tak kolorowo. Zdarzało się, że zadanie potrafiło usidlić mnie prawie na większość dnia…
Z tego też powodu nie jestem pewny czy w następnym wydaniu wezmę udział. Jednak trzeba poświecić na to trochę wolnego czasu. Zwłaszcza, gdy nie posiada się doświadczenia w takich zadaniach i szybko nie kojarzy problemu z potencjalnym sposobem, metodą lub algorytmem przydatnym w jego rozwiązaniu. Nie wspominając o późniejszym wyczyszczeniu kodu i napisaniu tych kilkunastu zdań w notce.
Ale nie ma co narzekać, bo cała zabawa była fajna :)
Komentarze (0)