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
     
    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
     
    Dzięki za przypomnienie, cisnę!
    • 3:
       
      CommentAuthorGeorge
    • CommentTime2 Dec 2021
     
    Witam i dobrej zabawy!
    • 4: CommentAuthormrk
    • CommentTime22 Dec 2021 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 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 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
     
    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 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
     
    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
     
    @mrk: W tym roku też coś kodujesz na atari w Advent Of Code ?
    • 11:
       
      CommentAuthorGeorge
    • CommentTime1 Dec 2022
     
    Ja koduję jak zwykle w R, już po pierwszej gwiazdce :)
    • 12: CommentAuthormrk
    • CommentTime1 Dec 2022 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
     
    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 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
     
    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
     
    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 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
     
    I ciekawostka - jak się wskakuje na pierwsze miejsce w rankingu:

    • 19: CommentAuthorastrofor
    • CommentTime2 Dec 2022
     
    i jak tu nie lubic webinspectora i js ;)
    • 20: CommentAuthormrk
    • CommentTime4 Dec 2022 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
     
    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 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 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
     
    czasy się zmieniają :)
    • 25: CommentAuthormrk
    • CommentTime8 Dec 2022 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
     
    Wczorajsze zadanie, tym razem z wizualizacją:
    • 27:
       
      CommentAuthorGeorge
    • CommentTime10 Dec 2022
     
    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
     
    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
     
    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 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 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<-