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
6f3048ca-7bf6-4d6b-bf6e-0a8cd2d2c273
4e4a613e-0794-4201-b2f2-611ce942a779
HannibalLecter

Ja w tym roku też miałem iść w Rust ale zdecydowałem się na mix Go i Nim. Z Go mam dość duże doświadczenia ale Nim użyłem praktycznie pierwszy raz i bardzo przypadł mi do gustu i trochę żałuję że nie jest bardziej popularny. Gratulacje za wytrwałość!


P.S - Vim rulez 🚀

Bujnik

Najs, dla mnie to był pierwszy AOC, całość, oprócz 24/2 i 25 zrobiłem w Java, równania po próbie rozwiązania na kartce na piechotę zrobiłem w mathematica i ostatnie z rozpędu też, fajnie nawet się udało zwizualizować ten problem.


Na pewno jeśli chciałbym w kolejnych latach cisnąć, to jakaś własna biblioteczka byłaby mega użyteczna, w tym roku byłem zbyt leniwy żeby repo robić.

rust-n-dust

@Bujnik własna biblioteka w miarę rozwiązywania - to, co się powtarza kilka razy leci do lib. Dla mnie najtrudniejsze w tym "ciśnięciu" byłoby wstawanie przed 6:00 przez niemal cały grudzień :D.

koszotorobur

@rust-n-dust - niezłe poświęcenie chłopie!

Bujnik

@rust-n-dust No ja tak przytryhardziłem, ścigałem się z paroma ludźmi z pracy, co też na jakości kodu rzutowało, bo byle wynik przeszedł tak naprawdę, a zgodnie ze sztuką, to i jakieś teściki i biblioteczka sensowna by się przydała

Zaloguj się aby komentować