AoC retro
No i udało się nagonić wszystkie zaległości i ukończyć AoC 2023 jeszcze w tym roku.
Był to mój drugi, po 2022, rok aktywnego rozwiązywania kalendarza do samego końca i na bieżąco (w sensie - w tym samym roku
). Historia i ASCII art to zdecydowany plus tegorocznej edycji. Problemy - te były ok, choć zeszły rok bardziej mi się spodobał.
W poprzednim roku używałem Pythona z Jupyter Notebook, co pozwalało szybko uzyskać działający kod. W tym wybór padł na Rust. Ogólne doświadczenie z tym językiem okazało się bardzo przyjemne, choć wiadomo - trzeba nieco więcej czasu poświęcić na przygotowanie inputu i testowanie/debugowanie.
No właśnie - to testowanie i debugowanie zupełnie zmieniło moje podejście. Zamiast szybko, jako-tako coś napisać i dalej ew. refactorować, to w końcowych dniach górował TDD z małymi krokami. Choć zajęło to dość sporo czasu, to finalna odpowiedź była dobra za pierwszą próbą. Opłaciło się.
Jednak jeśli chodzi o algebrę liniową i grafy - Python oferuje zdecydowanie lepsze biblioteki (NumPy i NetworkX) i zwartą składnię. Szczególnie odczuwalne było to w dniu 25, gdzie w Pythonie rozwiązanie to 1 funkcja z NetworkX a w Ruście... nie xD.
Podobnie algebra liniowa i dzień 24, który to rozwiązać można symbolicznie na papierze - gdy trzeba zaimplementować od zera, to tak średnio. Choć tu akurat moja wina, bo niby jest kilka bibliotek, ale z żadnej nie korzystałem
Dodatkowym odkryciem jest edytor
Helix - świetna i lekka alternatywa dla *vim czy VS Code. Rozsądne defaulty, minimalny config i współpraca z LSP out of the box.
#adventofcode