atarionline.pl Advent Of Code 2021 - Forum Atarum

    Jeśli chcesz wziąć udział w dyskusjach na forum - zaloguj się. Jeżeli nie masz loginu - poproś o członkostwo.

    • :
    • :

    Vanilla 1.1.4 jest produktem Lussumo. Więcej informacji: Dokumentacja, Forum.

      • 1:
         
        CommentAuthorGeorge
      • CommentTime1 Dec 2021 21:12
       
      Czołem!

      Ponieważ lubię różne zagadki programistyczne i myślę, że mogą się tu znaleźć programiści, którzy też takowe lubią, gorąco chciałem zachęcić do startu w kolejnej edycji programistycznego poszukiwania pierwszej gwiazdki (a właściwie 50-ciu) pod tytułem: Advent Of Code

      Jest wiele różnych portali z wyzwaniami programistycznymi, ten może trafić do Waszego gustu, ponieważ konstrukcja zagadek jest taka, że umożliwia użycie dowolnego języka programowania, również na Atari. Dodatkowo design strony przypomina stary monitor tekstowy z aplikacją, a rozwiązując zagadki odkrywamy obrazek w ASCII.

      Kolejne Zagadki startują każdego dnia o godz. 6:00 naszego czasu, każda składa się z dwóch części, pierwszej prostszej za srebrną gwiazdkę i drugiej trudniejszej, bazującej na pierwszej, za rozwiązanie której dostaje się złotą gwiazdkę w miejsce srebrnej.
      Trudność zagadek rośnie też stopniowo każdego dnia, tak że pierwsze zagadki robi się w minuty, a ostatnie w godziny, a czasem w dni. Można się ścigać kto zrobi pierwszy zadanie, ale można też po prostu zdobywać gwiazdki i odkrywać obrazek.

      Bawić się można wspólnie na globalnym leaderboardzie, albo również prywatnym.
      Gdyby ktoś miał ochotę dołączyć do mojego, serdecznie zapraszam. Kod leaderboardu: 1047933-40e942f8

      W razie problemów i chęci podzielenia się wrażeniami proszę pisać.
      Ja akurat, tak jak w zeszłym roku rozwiązuję zadanka w R, ale nic nie stoi na przeszkodzie spróbować Action!, Atari Basic, Assembler 6502 czy nawet Forth :)
      • 2: CommentAuthormrk
      • CommentTime2 Dec 2021 10:12
       
      Dzięki za przypomnienie, cisnę!
      • 3:
         
        CommentAuthorGeorge
      • CommentTime2 Dec 2021 13:12
       
      Witam i dobrej zabawy!
      • 4: CommentAuthormrk
      • CommentTime22 Dec 2021 20:12 zmieniony
       
      Wizualizacja dzisiejszego zadania ->link<- (trzeba było policzyć objętość takiej bryły, powstałej z sumowania i odejmowania prostopadłościanów podanych na wejściu) :]
      • 5: CommentAuthormrk
      • CommentTime7 Jan 2022 21:01 zmieniony
       
      Jako że tegoroczne zadania rozwiązywałem w Rust zacząłem je portować do rust-mos: ->link<- - i jak na razie jest bardzo ok (z pierwszych siedmiu zadań musiałem odpuścić tylko day05 (moje rozwiązanie ma chyba za duże wymagania pamięciowe)), a zadanie day07 na real atari wykonuje się jakieś 2h (na lapku ułamek sekundy) :) Później będzie gorzej, bo z tego co pamiętam niektóre zadania na lapku liczyły mi się kilka minut ;)
      • 6: CommentAuthormrk
      • CommentTime14 Jan 2022 01:01 zmieniony
       
      kolejne zadanie przeportowane na Atari (rust-mos), tym razem z wizualizacją :) (załącznik)
      Wykonuje się, bagatela, 2128 sekund (w porównaniu do 0.2s na lapku)

      BTW może ktoś się podejmie portu do MadPaskala / cc65 / Action? Chętnie bym porównał wyniki / implementację :) Zadanko jest naprawdę proste: ->link<- a wizualizacja niekonieczna (poprawność kodu łatwo sprawdzić bo dla tych samych danych wejściowych powinien skończyć się po takiej samej liczbie iteracji).
      • 7: CommentAuthorastrofor
      • CommentTime15 Jan 2022 22:01
       
      biblioteka do display listy wyglada bardzo fajnie. Czy jest , albo planowana jest biblioteka std obsługujaca metody: gotoxy, i write, ktore pomoglyby adeptom rust tworzyc i testowac logike do gier logicznych, ewentualnie tekstowych z udpatowaniem tylko konkretnych charow na ekranie, a nie wyswietlaniem calego ekranu. Ja caly czas obserwuje kolejne rozane wyzwania i trzymam kciuki za rusta na atari.
      • 8: CommentAuthormrk
      • CommentTime15 Jan 2022 23:01 zmieniony
       
      @astrofor jeżeli mówisz o ->link<- to ciężko to na razie nazwać biblioteką :) - ale fakt, displaylistę tworzę w bardzo podobny sposób jak w ->link<- i wypadało by pewnie zacząć wydzielać te rzeczy do jakiejś biblioteki.

      BTW biblioteki w rust publikuje się na crates.io ->link<- i nic nie stoi na przeszkodzie by publikować tam biblioteki dla Atari. Użycie później takiej biblioteki w swoim programie to dodanie jednej linijki do Cargo.toml, nic nie trzeba ręcznie ściągać i instalować, cargo załatwi resztę.

      Co do lepszej obsługi trybu tekstowego - jak najbardziej do zrobienia. Część rzeczy warto będzie pewnie dodać do llvm-mos-sdk: ->link<- (na razie jeśli chodzi o IO to jest tam tylko putchar :] ) - ale w sumie pewnie lepiej nawet zacząć od zaimplementowania i przetestowania tego w zewnętrznej bibliotece i ewentualnie spróbować później dodać do SDK.

      Zerkam sobie jak wygląda implementacja takiego gotoxy w cc65: ->link<- ->link<- i 'rocket science' to to nie jest - wpisanie wartości do kilku komórek pamięci. Spróbuję zebrać kilka utilków do io razem (implementacja rustowego print / gotoxy / clrscr) i wydać jakieś atari_io w wersji 0.0.1 - na pewno przyda mi się też podczas kolejnych eksperymentów z rust-mos. Dam znać jak coś się uda zrobić.
      • 9: CommentAuthormrk
      • CommentTime30 Nov 2022 22:11
       
      Za kilka godzin startuje tegoroczna edycja: ->link<- - zachęcam wszystkich do spróbowania swoich sił, także kodując na Atari (mi udało się przeportować 18 z 25 moich rozwiązań z zeszłego roku na rust-mos ->link<- powstał z tego w sumie całkiem ciekawy test-suite dla tego kompilatora). Zadania same w sobie są zawsze bardzo fajne, a próba upchnięcia rozwiązania w kilkadziesiąt KB ram i rozwiązanie w sensownym czasie na 6502 to dodatkowy stopień trudności :] Polecam.
      • 10: CommentAuthorastrofor
      • CommentTime30 Nov 2022 23:11
       
      @mrk: W tym roku też coś kodujesz na atari w Advent Of Code ?
      • 11:
         
        CommentAuthorGeorge
      • CommentTime1 Dec 2022 09:12
       
      Ja koduję jak zwykle w R, już po pierwszej gwiazdce :)
      • 12: CommentAuthormrk
      • CommentTime1 Dec 2022 12:12 zmieniony
       
      Ja cisnę znowu w rust-mos, wieloplatformowo :] Czas liczenia pierwszego zadania (dwie części) to niecałe 4 sekundy na Atari, hehe

      Running `mos-sim --cycles target/mos-sim-none/release/day01`
      part1: 69626
      part2: 206780
      6787646 cycles


      Repo: ->link<-
      • 13:
         
        CommentAuthorGeorge
      • CommentTime1 Dec 2022 15:12
       
      Input ma 10KB, ciekawe co będzie jak będzie miał ze 100KB? :)

      Jak robisz konwersję z ASCII na ATASCII?
      • 14: CommentAuthormrk
      • CommentTime1 Dec 2022 16:12 zmieniony
       

      George:

      Input ma 10KB, ciekawe co będzie jak będzie miał ze 100KB? :)

      Można czytać z dysku i przetwarzać strumieniowo :] Ale w poprzednim roku takich wielkich danych wejściowych prawie nie było, zobaczymy w tym.

      George:

      Jak robisz konwersję z ASCII na ATASCII?

      Tym akurat nie trzeba się przejmować, ATASCII jest przecież zgodne z ASCII dla większości interesujących znaków :]

      Zresztą testuję / uruchamiam nie na Atari ale na emulatorze 6502 z llvm-mos (łatwiejsze uruchamianie z linii poleceń i prawie całe 64kB ramu do wykorzystania)
      • 15:
         
        CommentAuthorGeorge
      • CommentTime1 Dec 2022 18:12
       
      Ja miałem jakieś problemy w Action! gdy podłączyłem plik ASCII w SIO2SD i chciałem załadować.
      • 16:
         
        CommentAuthorGeorge
      • CommentTime1 Dec 2022 18:12
       
      ASCII LF i FF to 10 i 12,
      a RET w ATASCII to 155, co w ogóle jest poza zakresem podstawowej tabeli ASCII.
      • 17: CommentAuthormrk
      • CommentTime1 Dec 2022 20:12 zmieniony
       
      @George ok, masz rację, zapomniałem że konwersja znaków końca wiersza jest robiona przez llvm-mos SDK - ale to tyle.
      • 18: CommentAuthormrk
      • CommentTime2 Dec 2022 20:12
       
      I ciekawostka - jak się wskakuje na pierwsze miejsce w rankingu:

      • 19: CommentAuthorastrofor
      • CommentTime2 Dec 2022 23:12
       
      i jak tu nie lubic webinspectora i js ;)
      • 20: CommentAuthormrk
      • CommentTime4 Dec 2022 12:12 zmieniony
       
      Kilka osób publikuje na reddit rozwiązania na 8-bitowe komputery, tu przykład day03 w c64 basic: ->link<- czas działania, bagatela, 8 godzin :]
      W komentarzach ktoś zoptymalizował do kilku minut.

      Moja wersja Rust to jakieś 5mln cykli, bez specjalnych optymalizacji (pewnie da się jeszcze co nieco wycisnąć)
      • 21:
         
        CommentAuthorgalu
      • CommentTime4 Dec 2022 13:12
       
      https://github.com/max-sixty/aoc-gpt

      Advent of Code, by GPT-3
      This solves Advent of Code puzzles by having GPT-3 write code in response to the puzzle's input.
      • 22: CommentAuthormrk
      • CommentTime4 Dec 2022 19:12 zmieniony
       
      A jaki się szum zrobił wokół tych rozwiązań na reddicie AoC, ludzie oburzeni że boty wskakują do rankingu (rozwiązanie opublikowane w 10 sekund i pierwsze miejsce w dziennym rankingu). A to historia dzieje się na naszych oczach, kolejne generacje tego AI będą zastępowały programistów (nie myślałem że tak szybko)
      • 23:
         
        CommentAuthorjhusak
      • CommentTime5 Dec 2022 00:12 zmieniony
       
      To nie tak, że będą nas zastępować. To jeszcze chwile potrwa. Ale na pewno AI będzie nas "wyręczać" :)
      • 24:
         
        CommentAuthorpirx
      • CommentTime5 Dec 2022 05:12
       
      czasy się zmieniają :)
      • 25: CommentAuthormrk
      • CommentTime8 Dec 2022 10:12 zmieniony
       
      Dzisiejsze zadanie ->link<- jak na razie najtrudniejsze dla małego Atari, 60mln cykli 6502. Fajnie że autor zadań trzyma cały czas rozsądny rozmiar danych wejściowych (jak na razie do 10kB)

      src: ->link<-
      • 26: CommentAuthormrk
      • CommentTime10 Dec 2022 17:12
       
      Wczorajsze zadanie, tym razem z wizualizacją:
      • 27:
         
        CommentAuthorGeorge
      • CommentTime10 Dec 2022 21:12
       
      Fajnie. A jak trzymałeś w pamięci unikalne koordynaty, które odwiedził "tail"? Mogło być ich całkiem więcej niż pamięci Atari.
      • 28:
         
        CommentAuthorGeorge
      • CommentTime10 Dec 2022 21:12
       
      A nie, jak policzyłem, to w 8KB się pewnie bym zmieścił.
      Ja się nie bawiłem w oszczędzanie pamięci i zrobiłem sobie macierz :)
      • 29: CommentAuthormrk
      • CommentTime10 Dec 2022 23:12
       
      Z pamięcią można było nawet poszaleć i dać dwa bity / piksel (i wyświetlać head w innym kolorze)
      • 30: CommentAuthormrk
      • CommentTime14 Dec 2022 16:12 zmieniony
       
      Do dzisiejszego nie mogłem nie zrobić wizualizacji, wpasowuje się perfekcyjnie w antic mode 0xf:


      Filmik nagrany z Warp Speed w Altirze, w normalnej prędkości chodzi ~1.5h :] Ale na razie zero optymalizacji (i jakieś dwa mnożenia per ziarnko piasku :])

      EDIT: jest 3 razy szybciej po prostych optymalizacjach, ciekawe ile dało by się jeszcze z tego wycisnąć.
      • 31: CommentAuthormrk
      • CommentTime15 Dec 2022 21:12 zmieniony
       
      Dzisiejsze zadanie rozwiązane za pomocą bruteforce'a na Atari liczyłoby się 26 godzin (kilka minut na symulatorze mos-sim, 100mld cykli procesora) :] i 0.5sek skompilowane na x86_64.
      ->link<-
      • 32:
         
        CommentAuthorGeorge
      • CommentTime29 Nov 2023 09:11
       
      Cześć!

      Czy ktoś w tym roku bierze również udział w Advent Of Code na dowolnym komputerze?
      Ja tym razem w Pythonie (wcześniej w R), niestety nie na Atari jeszcze.