Advent of Code 2024

Fórumok

Idén is indul az Advent of Code "karácsonyváró játék". Hajrá! :) 

 

Indítottam egy HUP leaderboard-ot2567216-8c01cc3b

🎅

 

(a privát leaderboard-ok csak login után látszanak)

Hozzászólások

Csatlakoztam, egyelőre a tegnapit csináltam csak meg.

Lehet idén én is benevezek koca programozóként. Szerintem jópofa! Már több éve figyelem, de nem éreztem erőt, hogy nekiálljak.

Egyszer találtam youtube-on: https://www.youtube.com/@TsodingDaily Elvetemült arc, 2020-ban minden napot más nyelven csinált, 2021-ben meg az egészet TempleOS-ben, HolyC-ben.

Csak nekem nem jó a HUP leaderboard? Szerintem nem jó helyre mutat a link.

Annyira nem fura az, csak ha menet közben ki-belépkednek emberek, az szét tudja túrni kicsit a pontokat:

[Local Score], which awards users on this leaderboard points much like the global leaderboard. If you add or remove users, the points will be recalculated, and the order can change. For N users, the first user to get each star gets N points, the second gets N-1, and the last gets 1. This is the default.

quemu adventi calendar nincs ?

“Luck Is What Happens When Preparation Meets Opportunity" - Seneca

Csatlakoztam én is. Zig-ben tolom, ha valakit érdekel a megoldás, a github-omon megnézheti. ;-)

Az 5. feladatnál a ti megoldásotok mit mond erre az inputra?

 

1|3
3|5

1,2,3,4,5
5,4,3,2,1
5,0,0,3,0,5,0,1,0,0,3,0,0,0,3

5,0,0,3,0,5,0,1,0,0,3,0,0,0,3

A feladat leírásából következik, hogy egy sorban nem fordulhat elő két azonos szám. Így ez UB, a feladat különböző helyes megoldásai más eredményt adhatnak rá:

1,3,3,3,5,5,0,0,0,0,0,0,0,0,0
0,0,1,3,3,3,5,5,0,0,0,0,0,0,0
0,0,0,0,1,3,3,3,5,5,0,0,0,0,0
0,0,0,0,0,0,0,1,3,3,3,5,5,0,0

Én a lehető legkevesebb cserével oldottam meg a rendezést, vagyis amire nincs szabály, az marad a helyén:

1,0,0,3,0,3,0,3,0,0,5,0,0,0,5

Igen, az eredeti példám nem valid a kontextus miatt, itt egy olyan ami szerintem valid, viszont szerintem sok megoldás nem működik rá:

10|11
10|20
10|21
11|20
11|21
20|21
20|30
20|31
21|30
21|31
30|31
30|40
30|41
31|40
31|41
40|41
40|51
41|51

51,40,41,30,31,20,21,10,11
30,10,40,11,20,41,21,31,51
40,51,20,21,11,41,31,10,30

itt a 2. részben 90 a jó válasz

A feladatok túl könnyűek, és a több tízezer játékos közül csak az első 100 kap pontot. Ez így sajnos sokkal inkább azon múlik, hogy ki hány órakor tud felkelni...

Én nagyon messze vagyok még a 100. idejétől is, így leginkább nem azon múlik mikor kelek fel. ;-)

Ennyi idő alatt kb. még el sem olvasom.

Pl. Ezek voltak az idők:

1. nap

1. 4 mp, 9 mp

100. 1:24, 2:31

...

5. nap

1. 14 mp, 55 mp

100. 1:58, 3:43

Igen, szerintem is csak a móka része az érdekes és az új vagy kedvenc nyelv tanulása, használata.

Én pl. Javaban dolgozom és korábban Scala-t, most Zig-et, a jövőben pedig vagy Gleam vagy Roc nyelvet fogok használni. ;-)

Sok esetben nem is a probléma a legnagyobb hátráltató, hanem a nyelvi elemek ismeretének hiánya.

pont mostanában gondoltam rá újra kéne mert régen mennyire jó volt

egész éjszakákat tudtam ülni 1-1 fölött

Hm. A 8. nap leírása kétértelmű (avagy rossz):

 

In particular, an antinode occurs at any point that is perfectly in line with two antennas of the same frequency - but only when one of the antennas is twice as far away as the other.

 

Ez alapján ez is valid lenne:

A.#...A

de a példák alapján nem az. Hasonlóan a 2. részben ilyenkor az egész sor jó lenne a leírás szerint, de mégsem. Hóhum :)

Csak én egyszerűsítettem le a második rész megoldását? Az első részhez volt két sorom, ahol hozzáadom a deltát egyik és másik irányban az antenna-párhoz. A második részben csak e köré tettem egy ciklust, hogy a delta 0..50-szeresét adjuk hozzá. Így volt a legegyszerűbb, csak nem a legszebb.

A mai nap az első, amikor elkezdett számítani a jó algoritmus. A második rész első nekifutásra elfutott vagy egy percig. Azóta gyorsítottam rajta a rend kedvéért. De úgy tűnik, egyre nehezebb lesz.

A 11. második felét 297GB memória használatnál lelőttem, a szó szerinti implementáció még c++-ban sem fut le :)

4 implementációt csináltam

az 3dikra már agyon optimalizáltam mindent, level45ig jutott el, level50nél már kihalt homokórával

a 4diknél vezettem be a titkot és fut le 100 ms alatt (java desktop)

level100 136ms

ez fölött már túlcsordulnak a long-jaim

level999 1632ms, csak már rossz végeredményt ad de elvileg bejárja amit be kell

Erről beszélünk, ugye? Day 11 (itt a levelekkel kicsit megzavartál :))

Kíváncsiságból lefuttattam mpz-vel:

C++ version:
1: 229043
2: 272673043446478
999: 149784474074557596060658185924435735870657851281404488941470264305379667846467964209924079184995308629484899577695587309030012929957693325743824253473503286459952467420750171739016867

real    0m0.752s
user    0m0.747s
sys     0m0.004s

 

uint64_t-vel persze gyorsabb, de rossz eredményt ad:

C++ version:
1: 229043
2: 272673043446478
999: 17455153103448592035

real    0m0.277s
user    0m0.271s
sys     0m0.004s

3 órát töltöttem azzal hogy a rekurzív implementációmat lecseréljem loop implementációra, azt remélve így sokkal gyorsabb lesz (java)

sikerült megírnom, de nem lett gyorsabb, sőt 20%al lassabb lett, viszont a kód sokkal olvashatatlanabb és érthetetlenebb

aztán még optimalizáltam rajta változókban és végül kb ugyanolyan gyors lett és teljesen olvashatatlan

ez volt a tanulságom

Ennek régen se volt értelme. Mármint nem ezeknek a programozási gyakorlatoknak, hanem hogy ez a karácsonnyal, adventtel van összekötve, ezeket az év bármelyik szakaszában lehet csinálni, jók is gyakorlásra.

The world runs on Excel spreadsheets. (Dylan Beattie)

Kíváncsi vagyok attól, aki a leaderboardon felül van, meséljétek már el, direkt 6-kor keltek a verseny miatt, vagy egyébként is véletlenül pont jó az időpont nektek? Én 7-kor még gondolkodni se tudok, 8-kor viszem a gyereket iskolába, általában 9-re kész vagyok a feladatokkal, és addigra már mindenki beelőzött.

Nekem van amikor belefért munka előtt a feladat, van amikor csak munka után, vagy csak másnap.

Az, hogy mennyi a pontszámod, az egy dolog, fontosabb, hogy élvezd és minél több csillag legyen ;-)

Én pl. most fogok átváltani Gleam-re. Eddig se voltam túl gyors a Zig-gel, mindent doksikból kell kinézni, és szenvedni kellett még az unsigned - signed átváltogatásokkal is, mivel még azt sem engedi együtt használni. Most a Gleam-mel kezdődik minden elölről. A sebességem újra drasztikusan esni fog. ;-)

A mai feladatot megcsináltam Zig után Gleam-mel is. Így, hogy tudtam mit hogyan kell megoldani, így is négyszer annyi idő volt, mint a Zig-gel, pedig abban sem vagyok egy ász.

Jó a buli. 9 nap késéssel kezdtem, ma értem utol a mezőnyt (day14) köszi a leaderboard meghívást.