Zdjęcie w tle
rust-n-dust

rust-n-dust

Kompan
  • 14wpisy
  • 17komentarzy
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
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!

Zaloguj się aby komentować

AoC 16/25
Oj jak dzisiaj siadło...
Po sprawdzeniu testowych przypadków, przełączenie się na dzisiejszy input dało poprawną odpowiedź za pierwszym razem.
Dodatkowo ASCII art na głównej wprowadza pewien smaczek...

#adventofcode

Zaloguj się aby komentować

AoC 15/25
Halo, halo, jak tam postępy? Ostatnie kilka dni to bardzo fajne zadanka, wręcz odprężające.
Przyznam się, że do tej pory w ogóle nie wczytywałem się w opisywaną historię. Pora to nadrobić.

#adventofcode
Bujnik

Dziś w końcu udało się w miarę sprawnie zrobić, tak, to utykałem na debugowaniu przez ostatnie dni na part 2

Zaloguj się aby komentować

AoC 13/25
Dziś proste zadanko, ale tyle ile czasu spędziłem nad debugowanie kodu to szkoda gadać...
Mój spaghetti code poległ na drugiej części, więc trzeba było porządnie wszystko przepisać i wtedy poszło.

#adventofcode

Zaloguj się aby komentować

Moje statsy z implementacji 11/25 AoC w Rust. Część plików zawiera wklejone przykłady z unit testami, a same inputy wczytuję z plików.

#adventofcode #programowanie
b75224ce-25f4-460d-9fbe-96a10d513ae4
koszotorobur

@rust-n-dust - najs

Ruścik dobry jest - mówię to jako Pythonista.

rust-n-dust

@koszotorobur Pythonik w kołchozie, a dla relaksu Rust xD

koszotorobur

@rust-n-dust - Tak samo - bo lubię szybkie rezultaty i szybkie pisanie kodu i Python jest już ugruntowany więc nie muszę nikogo do niczego przekonywać (a jak kod ma się wykonywać szybko to sobie modulik w Cythonie wymodzę... lub Ruście jak ma być bardzo szybko ).

Zaloguj się aby komentować

Oj dziś na tagu chyba nie bez powodu cicho xD.
Ja dopiero po pracy rozwiązałem Part 2, oczywiście "umiarkowanym" brute force...
No nic, zobaczymy co dalej.

#adventofcode #programowanie
2c8a5cc7-a75c-4a23-b7a3-465ab19de4a3
lukmar

heheheheheh, okej. czyli zupełny bruteforce odpada w drugiej części xD

0f6028ee-c2de-4cc6-a2c0-386080ffbcc0
rust-n-dust

@lukmar brute force location->seed da radę

Bujnik

@rust-n-dust +1

Zwykły bruteforce też da radę, tylko trzeba dzielić na paczki

mpower

Mi się w końcu udało part 2, ale chcąc uniknąć brute force poczytałem trochę komentarzy na reddicie

BilboBagosz

Hasło do 2 części dnia piątego: część wspólna zbioru

Zaloguj się aby komentować

Czwarty dzień i w końcu coś luźnego : )

#adventofcode #programowanie
mpower

Prawda, pierwsza część poszła w 10 minut, druga mam nadzieję że pójdzie równie łatwo podczas przerwy w pracy

rust-n-dust

@mpower 10 minut to zajęło mi "przetworzenie" logiki jak liczyć punktację dla karty xD

mpower

@rust-n-dust z czasem będzie lepiej

Zaloguj się aby komentować