Advent of Code

Programovacie jazyky, rady, poradňa...
harrison314
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 7170
Registrovaný: 27 máj 2009, 20:42
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: Advent of Code

Príspevok od používateľa harrison314 »

Ani nie komunisticke, skor chcu odfiltrovat tych co len najdu a skopiruju riesnie. A ako v realnom svete uspech programu nezalezi len od toho ako funguje ale aj ako je odprezentovany.

Ja som tiez fanatik do optimalizacie a performace :D no skor to robim na nejakych realnych problemoch, tiez mam rozpisany koncept blogpostu o extremnych optimalizaciach, za ktore by ta kolega zabil (aj ked to neznamena necitatelny a nepochopitelny kod, len su cudne). Nedavno som dokonca nasiel kniznicu, co mi umoznuje robit velmi jednoducho vypocty na grafickej karte, no nema to az take vyuzitie ako som si myslel.
harrison314
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 7170
Registrovaný: 27 máj 2009, 20:42
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: Advent of Code

Príspevok od používateľa harrison314 »

@aacid: Nakoniec si daco spravil v Ruste?
aacid
Hardcore addict
Hardcore addict
Príspevky: 7459
Registrovaný: 22 nov 2006, 21:55
Bydlisko: BA

Re: Advent of Code

Príspevok od používateľa aacid »

prvych par dni som robil v ruste, potom ked uz zacali trochu zlozitejsie zadania a bolo nutne robit rozne struktury tak to zacalo byt v ruste dost komplikovane... vsetkemu nastavovat lifetime bola otrava. potom som este par dni robil v pythone a nakoniec som sa na to vykaslal, nejak bolo malo casu a chute na to tento rok...
harrison314
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 7170
Registrovaný: 27 máj 2009, 20:42
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: Advent of Code

Príspevok od používateľa harrison314 »

Z toho rustu aspon vysiel pekny kod?
aacid
Hardcore addict
Hardcore addict
Príspevky: 7459
Registrovaný: 22 nov 2006, 21:55
Bydlisko: BA

Re: Advent of Code

Príspevok od používateľa aacid »

ze by to bol nejak extra pekny kod...
viac menej kazda funkcia vracia nullable premenne, unwrap() bola najcastejsia utility funkcia :D
no a davat si stale pozor na ownership je tiez otrava ktora ta nuti pisat viac kodu...

ako programovaci jazyk sa mi rust paci, vidim v nom buducnost ale skratka je to alternativa c++, nema moc zmysel v tom kodit nieco co by nemalo zmysel kodit v c++.
keby chcem robit novy operacny system, herny engine ci firmware pre nejaky hardware tak by som urcite skor siahol po ruste ako po c++, problem je ze ja take veci nerobim :)

ale skusenost dobra, urcite nelutujem ten cas straveny studovanim dokumentacie.
harrison314
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 7170
Registrovaný: 27 máj 2009, 20:42
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: Advent of Code

Príspevok od používateľa harrison314 »

Ja som spociatku s Rustom narazal na podobne veci, neskor sa to cvikom trosku eliminovalo (hlavne unwrap). A ano je to viac kodu. No potom ked clovek zacne robit nieco realne pride peklo s error handlingom (sice ho ma ovela lepsie vyrieseny ako napriklad Go, kde sa pise "if error then" na kazdy druhy riadok), kde je velmi otravne stale mapovat chyby (s C# som zvyknuty, ze vynimky riesim na jednom mieste aplikacie a osttane su spcialne pripady), dalej dost otravna bola praca s vektormi a asi to najhorsie - praca so stringami (rust ma kvantum typov stringov a ani s jednym sa nepracuje dobre). Navyse rust ma pomerne biednu standardnu kniznicu, tak kazda kniznica si implementuje plno vlastnych typov a kazda kniznica ich ma ine, vysledkom je ze plno kodu je hnusne lepidlo, inak tym trpi aj javascript.
harrison314
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 7170
Registrovaný: 27 máj 2009, 20:42
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: Advent of Code

Príspevok od používateľa harrison314 »

Tento rok rozmyslam, ze ked bude dost casu, tak tak na Advent of Code skusim Zig
aacid
Hardcore addict
Hardcore addict
Príspevky: 7459
Registrovaný: 22 nov 2006, 21:55
Bydlisko: BA

Re: Advent of Code

Príspevok od používateľa aacid »

Zig vypada zaujimavo, tiez som nad nim rozmyslal pred rokom, ked som vybral rust, ale asi som na tieto low level jazyky uz stary :D

ja som si vybral tento rok Go.
ale pouzivam copilot. tak ma velmi zaujima ci sa pri takomto programovani naucim aj realne ten jazyk.
vcera som si robil taky klasicky boilerplate, nieco co mi kazdy den vytvori adresar, ulozi input (iba z clipboardu) a vytvori basic subor aby som to nemusel robit kazdy den rucne.
o Go viem minimum, par rokov dozadu som to skusal ale nic si nepamatam. takze kodenie prebiehalo takym stylom ze som si v hlave vymyslel postup a potom uz len pisal copilotu "vytvor funkciu co vrati aktualny den v mesiaci s dvoma ciframi", "funkciu co precita text z cliboardu", "funkciu co vytvori adresar a ulozi text do suboru"...
na jednej strane mam pocit ze ci sa vlastne nieco ucim ked to pise on, na druhu stranu bez copilotu ten flow nie je o moc iny, akurat ze miesto napisania dotazu a pockania par sekund musim googlil a hladat to spravne. samozrejme vsetok kod co mi vrati si precitam a pochopim a tiez to samotne spajanie roznych funkcii uz robim sam.
toto bolo samozrejme easy, uvidime o 2 tyzdne :D
harrison314
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 7170
Registrovaný: 27 máj 2009, 20:42
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: Advent of Code

Príspevok od používateľa harrison314 »

Go som riesil par rokov dozadu (este pred Rusom) a mam pocit, ze sa da naucit za 3 hodiny. Ale vo vysledku je to taky pascal krizeny s javascriptom, je to extremne primitivne a otravne (vtedy nemal ani generika, chyby trebalo spraovavat if-mi, takze za kazdou funkciou bol if s kontrolou na chybu a podla mna tomu chybali uplne zakladne veci aby sa dal rozumne pouzit, ale asi pre to je tak popularny). Potom som presiel na Rust, lebo ten vsetky tie zle veci Go riesil dobre. A z dnesneho pohladu pre mna Go nema vyznam, lebo C# je vyrazne richlejsi, je to lepsi jazyk a pri nativnej kompilacii robi binarky odbobnej velkosti.
aacid
Hardcore addict
Hardcore addict
Príspevky: 7459
Registrovaný: 22 nov 2006, 21:55
Bydlisko: BA

Re: Advent of Code

Príspevok od používateľa aacid »

tak ja si to chcem iba vyskusat, ma to svoju zakladnu tak preco nie.
rozmyslal som aj nad C# ale to proste nie je ziadna vyzva, to je jazyk v ktorom ma najviac skusenosti. mozno ma tam laka moderny .NET (6+) a mozno si vyskusat targetovat WASM. ale to mi neprislo zrovna nieco co chcem skusat na aoc :D

a nic ine ma nejak nelaka teraz. python a js/ts je nuda, c++/rust a podobne su moc low level...

Autoeditácia príspevku po 1 min 57 sek:
laka ma lisp (rocket/clojure) ale vzdy ked som to skusal tak ma tam neuveritelne iritovalo ze vsetko je v zatvorkach.

mozno nejaky iny funkcionalny jazyk by bol zaujimavy.
harrison314
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 7170
Registrovaný: 27 máj 2009, 20:42
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: Advent of Code

Príspevok od používateľa harrison314 »

Chapem, ja som ho tiez skusal, kvoli vsadepritomnemu hype.

Ak chces skusit funkcionalny jazyk, tak odporucam Haskell, skusal som ho este na vyske a dal mi naozaj vela. Ma privetivu syntax, pouziva odsadzovanie na vyjadernie scope, ale nie je to peklicko ako v Pythone, lebo tu sa nerobia dlhe funkcie. A je to iny sposob myslenia. Vdaka nemu sa smejem, ked sa hvoori o ruste, javasripte alebo dokonca go, ze su funkcionalne, lebo na funkcionalny jazyk naozaj nestaci vediet ulozi funkciu do premennej.
weroro
Flash coder
Flash coder
Používateľov profilový obrázok
Príspevky: 3203
Registrovaný: 14 feb 2009, 22:34
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: Advent of Code

Príspevok od používateľa weroro »

harrison314 napísal: 30 nov 2023, 8:42 Tento rok rozmyslam, ze ked bude dost casu, tak tak na Advent of Code skusim Zig
Tento rok som v ZIG-u robil niekoľko projektov. Je to jeden z tých jazykov, ktorý mne ako zarytému a rozmaznanému JS/TS developerovi absolútne sadli. Pred tým som písal webassembly projekty v Rust-e :smt078
harrison314
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 7170
Registrovaný: 27 máj 2009, 20:42
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: Advent of Code

Príspevok od používateľa harrison314 »

Co ti nesedelo na Webassembly v Ruste? Zaujima ma to, lebo sam som to davno skusal.
Na co vlastne webassembly pouzivas?
aacid
Hardcore addict
Hardcore addict
Príspevky: 7459
Registrovaný: 22 nov 2006, 21:55
Bydlisko: BA

Re: Advent of Code

Príspevok od používateľa aacid »

prvy den som mal riadny zasek. som sa hanbil verejne priznat ze som zakysol na prvom dni ale potom sa zacali ozyvat kolegovia ze tiez mali problem.
klasicky problem ked dostanes spravny vysledok na testovacich datach ale na tych realnych uz nie. a teraz zistuj. a hento bola taka blbost co by ma bez hintu veru nenapadlo.

spravil som to v Go, ked to nefungovalo a uz som bol zufaly tak (po debate o funkcnom programovi) som to spravil znova v F#. samozrejme to hadzalo rovnaky zly vysledok.
Go ma nenadchlo, ako si pisal, vsade davat if not null je otrava. F# ma tiez nechal chladnym, chapem principom funkcneho programovania ale nejak v tom moc vyznam nevidim. asi som skostnateny z tolkych rokov OOP.
takze dalsie dni teraz uplne tupo riesim v C# :D uprimne ma cely advent of code trochu prestava bavit, mam pocit ze je to furt to iste kazdy rok a ked ani novy jazyk sa na tom neucim tak v tom nevidim moc zmysel.
zatial ale robim.
harrison314
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 7170
Registrovaný: 27 máj 2009, 20:42
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: Advent of Code

Príspevok od používateľa harrison314 »

Tie ulohy ani nemozu byt extra ine, musi to zvlasnut kazdy jazyk a nesmu byt ani extra narocne.

Ja si tento rok vyberam, skusil som prvu so Zigom s tym, ze som sa ucil syntax a nuancy jazyka (druha cast sla vyriesit lahko jednym regexom). Cez vykend sa chytsma rovno na 4-tu a uvidim ktore este.

Inac davnejsie som tiez skusal F#, aj som s nim vyriesil nejake veci (prakticke pre seba), ale neprisiel som mu na chut, lebo moj aj cudzi kod vyzera (kvoli mohutnemu pretazeniu operatorov) ako majske hieroglify. To nie je nic pre mna. Ako som hovoril Haskell bol v tomto ovela lepsi. A co som pozeral minulorcne riesnia v nom, tak prevych par dni to bolo na jeden riadok :D

Ja sa este do toho ucim Avaloniu (stale C# a je to WPF 2 ale multiplatformove), takze cas rozhadzujem medzi to a AoC.
aacid
Hardcore addict
Hardcore addict
Príspevky: 7459
Registrovaný: 22 nov 2006, 21:55
Bydlisko: BA

Re: Advent of Code

Príspevok od používateľa aacid »

harrison314 napísal: 04 dec 2023, 17:52druha cast sla vyriesit lahko jednym regexom
toto by ma zaujimalo ako si spravil, podelis sa?
lebo ja som tiez najprv regex robil.
prva cast bolo jednoduche "\d".
myslel som ze druha cast bude to iste len "\d|one|two|three|four|five|six|seven|eight|nine".
ale vykapal som na slovach ktore zdielaju pismeno (oneight, eighthree) ked regex zoberie bud jedno alebo druhe, nie obe naraz.
nakoniec som to rozdelil na dve casti naprv z lava hladal prve cislo a nasledne som cely string reversol a znova hladal prve cislo.
harrison314
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 7170
Registrovaný: 27 máj 2009, 20:42
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: Advent of Code

Príspevok od používateľa harrison314 »

Stacilo regexu povedat aby hladal aj prekryvajuce sa casti. Nejako takto.

Kód: Vybrať všetko

Regex.Matches(line, @"(?=(\d|one|two|three|four|five|six|seven|eight|nine))").Select(t=>t.Groups[1].Value)
aacid
Hardcore addict
Hardcore addict
Príspevky: 7459
Registrovaný: 22 nov 2006, 21:55
Bydlisko: BA

Re: Advent of Code

Príspevok od používateľa aacid »

tak o tom som nevedel :D
ani ma to nenapadlo googlit.
Today I Learned...
harrison314
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 7170
Registrovaný: 27 máj 2009, 20:42
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: Advent of Code

Príspevok od používateľa harrison314 »

Tento sok som si povedal, že Advent of Code vynechám, lebo som našiel inú zábavku -The One Billion Row Challenge (povodny blog - https://www.morling.dev/blog/one-billion-row-challenge/).

Ide o programátorskú úlohu, kde na vstupe je súbor, v ktorom na každom riadku je meno miesta a nameraná teplota. Úlohou je spraviť program, ktorý súbor precita a na vystup vypise zrgupnute miesta a ku kazdemu nimimalnu, priemernu a maximalnu teplotu. Je to vec, ktora sa da spravit za tri minuty. Ale tu je ta zabava inde - vstupy súbor má 10^9 riadkov a ide o to spravit co najrichlejsie. Tato challenge povodne vznikla pre Javu, ale riesi sa aj v inych jazykoch.

Ja som sa v C# zo cca. 4 minut (naivna implementacia) dostal zatial na 80 sekund.
M4jk1:-)
Professional
Professional
Používateľov profilový obrázok
Príspevky: 1300
Registrovaný: 28 apr 2006, 18:46

Re: Advent of Code

Príspevok od používateľa M4jk1:-) »

skušam si pár mesiacov php. Spraviť registraciu, login uzivatela. prepojenie PDO s databazou, pridať task title a k nemu description. Čiže základy... Otvoril som si ten script a riadok -> $randStdNormal = sqrt(-2 * log($u1)) * sin(2 * pi() * $u2). Zastavil moju predstavivosť.
Napísať odpoveď