16 grudnia 2025 11:10

Advent of Code to coroczny konkurs programistyczny. W 2025 roku organizatorzy skró­cili edycję do 12 dni, a w Instytucie po raz pierwszy uruchomiliśmy osobny ranking instytutowy obok istniejącego od lat rankingu dla osób z kursu Rusta. Pierwsze zadanie pojawiało się o północy czasu EST (u nas o 6:00). Wszelkie działania organizacyjne w II UWr w związku z konkursem koordynował Łukasz Piwowar.

Zwycięzcy i klasyfikacja końcowa

Top 5

  1. Sko0owi (Dawid Skowronek) — 387 pkt
  2. Łukasz Piwowar — 384 pkt
  3. Grzegorz Kodrzycki — 353 pkt
  4. MaksWiśniewski (Maksymilian Wiśniewski) — 298 pkt
  5. Maciej Ciepiela — 283 pkt

Dalsze miejsca (aktywni)

  1. an132 — 281 pkt
  2. Frus — 237 pkt
  3. Paweł — 162 pkt
  4. Arti X — 68 pkt
  5. (anonymous user #5477008) — 57 pkt
  6. Joanna Suwaj — 41 pkt
  7. Oskar Kalinowski — 25 pkt
  8. Daron0407 — 13 pkt

Zrzut ekranu: końcowa tabela punktów i gwiazdek w rankingu.

Klasyfikacja medalowa (podium per day)

Zliczamy „podium” każdego dnia (złoto/srebro/brąz). Widać tu regularność liderów oraz to, że przewaga w całym rankingu to nie tylko pojedyncze „wygrane dni”, ale powtarzalność.

Zrzut ekranu: tabela 'Podium per day' z ikonami medali dla dni 1–12.

Nagrody (koszulki) dla zwycięzców

Koszulki przewidziane są dla pierwszych 5 osób oraz jednej wylosowanej z miejsc 6–20. W rankingu mamy komplet aktywnych wyników do miejsca 13 więc losowanie wykonujemy z puli 6–13.

  • 6. an132
  • 7. Frus
  • 8. Paweł
  • 9. Arti X
  • 10. (anonymous user #5477008)
  • 11. Joanna Suwaj
  • 12. Oskar Kalinowski
  • 13. Daron0407

Wylosowana osoba (seed: 2419038-c3d5fd9c): Arti X (miejsce 9).

Dzień 1

Zrzut ekranu: wyniki czasowe dnia 1.

Dzień 2

Zrzut ekranu: wyniki czasowe dnia 2.

Dzień 3

Zrzut ekranu: wyniki czasowe dnia 3.

Dzień 4

Zrzut ekranu: wyniki czasowe dnia 4.

Dzień 5

Zrzut ekranu: wyniki czasowe dnia 5.

Dzień 6

Zrzut ekranu: wyniki czasowe dnia 6.

Dzień 7

Zrzut ekranu: wyniki czasowe dnia 7.

Dzień 8

Zrzut ekranu: wyniki czasowe dnia 8.

Dzień 9

Zrzut ekranu: wyniki czasowe dnia 9.

Dzień 10

Zrzut ekranu: wyniki czasowe dnia 10.

Dzień 11

Zrzut ekranu: wyniki czasowe dnia 11.

Dzień 12

Zrzut ekranu: wyniki czasowe dnia 12.

Ranking osób piszących w języku Rust

Zrzut ekranu: wyniki rankingu dla osób piszących w języku Rust.

Boty w rankingu (LLM/reasoner + automatyzacja)

W tym roku pojawił się eksperyment: dwa boty rozwiązujące zadania przez LLM/reasoner (Gemini 3.0) i automatycznie wysyłające odpowiedzi na AoC. Zostały dodane do rankingu, ale finalnie wycofane z końcowego zestawienia. Autorami są Dawid Skowronek i Grzegorz Kodrzycki.

Wyniki botów:

  • SkowiGPT (autor Dawid Skowronek): 22/24 gwiazdki
  • Noob :D (autor Grzegorz Kodrzycki): 21/24 gwiazdki

Projekt powstał 6 grudnia, a wcześniejsze dni były „odtwarzane” lokalnie.
Tryb autonomiczny: GitHub Actions, start o 6:01 CET każdego dnia.

Wywiad z autorem pierwszego z nich (fragmenty korespondencji)

[lpi]
Czy może Pan coś więcej napisać o tym projekcie?

[Sko0owi]
Razem z kolegą uznaliśmy, że chcemy przetestować jak przykładowy LLM potrafi sobie poradzić z AoC. Każdy z nas skonstruował swoją wersję, która:

  • pobiera zadanie wraz z inputem ze strony
  • wysyła je do Gemini prosząc o kod rozwiązujący to zadanie (narzuciliśmy Pythona)
  • odpala wygenerowany kod lokalnie
  • wysyła wynik kodu na AoC

[lpi]
Czy jest w pełni autonomiczny, jak to działa, czy uruchamia Pan go po zrobieniu zadania przez siebie, czy równolegle?

[Sko0owi]
Użyliśmy GitHub Actions i prostego schedulera (uruchamia się 6:01 AM UTC+1). Więc udało się zrobić agenta, który rozwiązuje zadania niezależnie. Oczywiście na głównym koncie sam piszę rozwiązania, ale jest lekka satysfakcja z próbą ścigania się z Gemini :>

[lpi]
„Czy trzeba mu dużo pomagać, czy poradził sobie do dzisiejszego dnia z wszystkimi zadaniami?” (pytanie zadane 8 dnia)

[Sko0owi]
Mój obecny prompt poradził sobie z każdym zadaniem do tej pory, prompt kolegi natomiast nie wbił 2 gwiazdki 7 dnia. Oczywiście bot powstał dopiero 6 grudnia, więc jego wynik „czasowy” jest słabszy, jednak wszystkie poprzednie poziomy zrobił sam (puszczałem go lokalnie). Czasem nie udaje mu się zrobić poziomu za pierwszym razem, ale ma ustawione, że ma próbować 10 razy i dopiero wtedy się poddać. (Na razie max 2 re-run’y wystarczały).

[lpi]
Widzę, że usunęliście boty z rankingu, myślę, że tak będzie fair wobec białkowych…

[Sko0owi]
Też doszliśmy do takiego wniosku, by uprościć potem losowanie i możliwie nie przeszkadzać w rankingu.

 

Serdeczne gratulacje dla wszystkich uczestników!
Zapraszamy za rok na kolejną edycję (lpi)