Kirjautuminen

Haku

Tehtävät

Keskustelu: Yleinen keskustelu: Joulukalenteri 2022

Sivun loppuun

TapaniS [25.11.2022 14:42:21]

#

Kohta avautuu joulukalenterin ensimmäinen luukku!

Sitä odotellessa voi tehdä vanhoja kalentereita.

Putkan selviytyjät löytyy jatkossa täältä.

tkok [28.11.2022 10:08:36]

#

Millä koodilla pääsee putkan listalle?

Metabolix [28.11.2022 15:53:16]

#

tkok kirjoitti:

Millä koodilla pääsee putkan listalle?

Lienee tämä sama kuin viime vuosina: 1142475-414cff12.

Minne mahtaa pukki tällä kertaa matkustaa?

tkok [10.12.2022 09:59:35]

#

10 päivää täynnä. Hyvin alkanut: hauskoja tehtäviä, rumaa python koodia. Lahjoitin kahvin tekijälle.

TapaniS [12.12.2022 12:17:54]

#

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 ..

jalski [14.12.2022 20:32:05]

#

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 ;

Metabolix [14.12.2022 22:12:44]

#

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?

TapaniS [15.12.2022 10:48:12]

#

Metabolix kirjoitti:

Olisiko Putkan rekursio-oppaasta apua?

Heh, tuollahan on hakemistojen listaus (päivä 7 tehtävä!) toteutettu rekursiolla!

Rekursio

Metabolix [16.12.2022 21:00:17]

#

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


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta