Advent of Code
-
harrison314
Hardcore addict
- Príspevky: 7179
- Registrovaný: 27 máj 2009, 20:42
- Bydlisko: Bratislava
- Kontaktovať používateľa:
Re: Advent of Code
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 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.
Ja som tiez fanatik do optimalizacie a performace 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
- Príspevky: 7179
- Registrovaný: 27 máj 2009, 20:42
- Bydlisko: Bratislava
- Kontaktovať používateľa:
Re: Advent of Code
@aacid: Nakoniec si daco spravil v Ruste?
Re: Advent of Code
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
- Príspevky: 7179
- Registrovaný: 27 máj 2009, 20:42
- Bydlisko: Bratislava
- Kontaktovať používateľa:
Re: Advent of Code
Z toho rustu aspon vysiel pekny kod?
Re: Advent of Code
ze by to bol nejak extra pekny kod...
viac menej kazda funkcia vracia nullable premenne, unwrap() bola najcastejsia utility funkcia
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.
viac menej kazda funkcia vracia nullable premenne, unwrap() bola najcastejsia utility funkcia
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
- Príspevky: 7179
- Registrovaný: 27 máj 2009, 20:42
- Bydlisko: Bratislava
- Kontaktovať používateľa:
Re: Advent of Code
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
- Príspevky: 7179
- Registrovaný: 27 máj 2009, 20:42
- Bydlisko: Bratislava
- Kontaktovať používateľa:
Re: Advent of Code
Tento rok rozmyslam, ze ked bude dost casu, tak tak na Advent of Code skusim Zig
Re: Advent of Code
Zig vypada zaujimavo, tiez som nad nim rozmyslal pred rokom, ked som vybral rust, ale asi som na tieto low level jazyky uz stary
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
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
-
harrison314
Hardcore addict
- Príspevky: 7179
- Registrovaný: 27 máj 2009, 20:42
- Bydlisko: Bratislava
- Kontaktovať používateľa:
Re: Advent of Code
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.
Re: Advent of Code
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
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.
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
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
- Príspevky: 7179
- Registrovaný: 27 máj 2009, 20:42
- Bydlisko: Bratislava
- Kontaktovať používateľa:
Re: Advent of Code
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.
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
- Príspevky: 3203
- Registrovaný: 14 feb 2009, 22:34
- Bydlisko: Bratislava
- Kontaktovať používateľa:
Re: Advent of Code
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-eharrison314 napísal: ↑30 nov 2023, 8:42 Tento rok rozmyslam, ze ked bude dost casu, tak tak na Advent of Code skusim Zig
-
harrison314
Hardcore addict
- Príspevky: 7179
- Registrovaný: 27 máj 2009, 20:42
- Bydlisko: Bratislava
- Kontaktovať používateľa:
Re: Advent of Code
Co ti nesedelo na Webassembly v Ruste? Zaujima ma to, lebo sam som to davno skusal.
Na co vlastne webassembly pouzivas?
Na co vlastne webassembly pouzivas?
Re: Advent of Code
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# 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.
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# 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
- Príspevky: 7179
- Registrovaný: 27 máj 2009, 20:42
- Bydlisko: Bratislava
- Kontaktovať používateľa:
Re: Advent of Code
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
Ja sa este do toho ucim Avaloniu (stale C# a je to WPF 2 ale multiplatformove), takze cas rozhadzujem medzi to a AoC.
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
Ja sa este do toho ucim Avaloniu (stale C# a je to WPF 2 ale multiplatformove), takze cas rozhadzujem medzi to a AoC.
Re: Advent of Code
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
- Príspevky: 7179
- Registrovaný: 27 máj 2009, 20:42
- Bydlisko: Bratislava
- Kontaktovať používateľa:
Re: Advent of Code
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)
Re: Advent of Code
tak o tom som nevedel
ani ma to nenapadlo googlit.
Today I Learned...
ani ma to nenapadlo googlit.
Today I Learned...
-
harrison314
Hardcore addict
- Príspevky: 7179
- Registrovaný: 27 máj 2009, 20:42
- Bydlisko: Bratislava
- Kontaktovať používateľa:
Re: Advent of Code
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.
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.
Re: Advent of Code
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ť.