Kohta avautuu joulukalenterin ensimmäinen luukku!
Sitä odotellessa voi tehdä vanhoja kalentereita.
Putkan selviytyjät löytyy jatkossa täältä.
Millä koodilla pääsee putkan listalle?
tkok kirjoitti:
Millä koodilla pääsee putkan listalle?
Lienee tämä sama kuin viime vuosina: 1142475-414cff12
.
Minne mahtaa pukki tällä kertaa matkustaa?
10 päivää täynnä. Hyvin alkanut: hauskoja tehtäviä, rumaa python koodia. Lahjoitin kahvin tekijälle.
Tänään oli jo vaativampi tehtävä. Oma ennätys tuli kuitenkin: ajalla 03:18:46 sijoitus 9241 molempien osioiden ratkaisussa!
Pari päivää on jäänyt välistä, mutta tänään pitäisi olla illalla puolisen tuntia vapaata, niin ehkä saan tehtyä paikon tuohon. :)
---
Pieni paikko tuli, mutta uusia aukkoja näyttää taas tulevan ..
tkok kirjoitti:
10 päivää täynnä. Hyvin alkanut: hauskoja tehtäviä, rumaa python koodia. Lahjoitin kahvin tekijälle.
Itse en ole älyttömästi ehtinyt näitä ratkomaan. Jokunen ensimmäinen tehtävä tuli ratkaistua ja omakaan koodini ei varmasti kauneuskilpailuja voita! ;D
Esimerkiksi kuudennen päivän ratkaisuni näytti tältä:
( "" swap s:+ ) 'a 'z a:generate ( 1 swap n:shl ) 0 25 a:generate m:zip ( swap m:_@ ) curry: lookup \ s -- n \ Bits set in the 32-bit integer : bits32-set? \ n -- n dup 1 n:shr x55555555 n:band n:- dup 2 n:shr x33333333 n:band swap x33333333 n:band n:+ dup 4 n:shr n:+ x0f0f0f0f n:band dup 8 n:shr n:+ x00ff00ff n:band dup 16 n:shr n:+ x0000ffff n:band ; : sequence \ a n -- a a:new rot ( over swap 4 pick a:slice _swap a:push swap ) 0 2 pick a:len n:1- nip 5 pick n:1+ n:- loop drop nip ; : find \ a n -- dup>r sequence ( ' lookup a:map ' n:bor 0 a:reduce bits32-set? ) a:map r@ ' n:= a:indexof null? !if r@ n:+ . cr else drop "Sorry, not found!\n" . then drop rdrop ; : app:main "a6.txt" f:slurp >s "" s:/ dup 4 find 14 find ;
Advent of code on siitä erikoinen verrattuna moniin muihin tehtäviin, että usein riittää ajallisesti huonokin ratkaisu. Esimerkiksi tämä 14. päivän hiekan valuminen onnistuu tarpeeksi nopeasti, vaikka silmukassa siirtelee hiekkaa ruutu kerrallaan, kunnes tehtävän ehto täyttyy. Algoritmisesti hienompi ratkaisu huomioisi, että seuraava hiekka valuu täsmälleen samaa reittiä ja siis laskentaa voi jatkaa edellisistä koordinaateista, eli syvyyshaun tyyppinen ratkaisu. Vielä hienompi algoritmi varmaan laskisi suoraan hiekkakasojen kulmat ja pinta-alat ilman koko ruudukon ylläpitoa ja selviäisi näin vielä paljon isommasta syötteestä.
TapaniS kirjoitti:
Pieni paikko tuli, mutta uusia aukkoja näyttää taas tulevan ..
Olisiko Putkan rekursio-oppaasta apua?
Metabolix kirjoitti:
Olisiko Putkan rekursio-oppaasta apua?
Heh, tuollahan on hakemistojen listaus (päivä 7 tehtävä!) toteutettu rekursiolla!
TapaniS kirjoitti:
Metabolix kirjoitti:
Olisiko Putkan rekursio-oppaasta apua?
Heh, tuollahan on hakemistojen listaus (päivä 7 tehtävä!) toteutettu rekursiolla!
Myös päivä 13 vaatii käytännössä rekursiota sisäkkäisten listojen vertailuun, ja muutenkin rekursio on luonteva lähtökohta esimerkiksi monissa hakualgoritmeissa.
Metabolix kirjoitti:
usein riittää ajallisesti huonokin ratkaisu.
Pääsinkin sanomasta. Päivästä 15 tehtävien vaikeusaste hyppäsi kertaheitolla eikä minulla ole kahteen tuoreimpaan kovin nopeaa ratkaisua. :D
Aihe on jo aika vanha, joten et voi enää vastata siihen.