8 ms·
Last year I got stuck on Day 12 for a full week, and thinking about how to solve it consumed my every waking moment. I think this year, I'm going to be kind to
by atribecalledqst 2y ago
Last year I got stuck on Day 12 for a full week, and thinking about how to solve it consumed my every waking moment. I think this year, I'm going to be kind to myself and not participate so I can really enjoy the winter break from work.
- pvinis 2y agoA friend recently shared this with me. I think you'll like it. https://eli.li/december-adventure https://eli.li/december-adventure
- pkd 2y agoThanks, I like this.
- orra 2y agoSounds sensible. It's important to set boundaries, and enjoy time off. For me Advent of Code is a slippery slope. The difficulty ramps up so at first it's easy, then it's rewardingly difficult. But then before I know it, it takes wayyyyy too much time. The danger is being emotionally invested by then.
- matsemann 2y agoThere's a graph here of the "hardness" of each day/task, based on how long the 100th place on the leaderboard used. https://aoc.xhyrom.dev/ https://aoc.xhyrom.dev/ So it's not linear, and also based on your own knowledge. So perfectly fine to skip some days and still it's possible to solve some of the next ones!
- ruuda 2y agoCool, it would be nice if that one aligned the days which were on weekends, as those tend to have harder problems.
- SketchySeaBeast 2y agoIf I understand correctly, and I'm not sure if that graph proves that, they try to put longer puzzles on weekends.
- wjholden 2y agoRight, Eric Wastl addresses exactly this in his talk. He considers weekends and burnout in the pacing of the event. I think this is the right video: https://youtu.be/bS9882S0ZHs https://youtu.be/bS9882S0ZHs
- schneems 2y ago> So perfectly fine to skip some days and still it's possible to solve some of the next ones! You try telling that to my brain. That guy doesn’t listen to me.
- tg180 2y agoThis is why I usually do the simpler ones and then stop... Otherwise, I just can’t skip, it’s stronger than me.
- torginus 2y agoUgh, I hate log scales used arbirarily, every silicon valley nerd things it makes them cool like their EE profs teaching actual science or Ray Kurzweil singularity whatever nonsense.
- dahart 2y agoRay Kurzweil is indeed full of crap (I have a specific bone to pick with his intentional mis-use of life expectancy among other things), but what makes you think in this case the use of log is arbitrary? Did you look at the data with a linear axis? I just tried it, and the vertical space is dominated by 4 or 5 outliers, and on top of that you can’t see the trend as well when it’s linear and all the data is smooshed at the bottom. Log plots are great when your values span many orders of magnitude. That’s true in this case, and the log plot both uses less vertical space, which is nice, and it more clearly shows the trend and wastes less empty space on the small minority of outliers.
- roncesvalles 2y agoThere are some "filter" days for sure, usually those are when the solution needs a major leap in your approach such as concurrency, dynamic programming, or geometry equations.
- abound 2y agoIt's usually not concurrency FWIW, it's almost always algorithmic in nature. On a modern machine, even highly concurrent* code would only execute 10-20x as fast and you could just wait a bit. One common AoC trick is that you can brute-force part one (e.g. O(n^2) complexity or worse), but part two scales up `n` to make that intractable. *ignore my sloppy conflating of concurrency and parallelism
- Jtsummers 2y agoI agree with you. I don't think either concurrency or parallelism have ever been necessary. In 2019 with Intcode, it was the simplest approach (use multiple threads, one per VM) for a couple days, but it was never actually necessary. You could do the same thing with purely sequential code, but you had to juggle the state of multiple running systems yourself then. Threads were much easier (or coroutines, go routines, processes, etc.; some concurrency system). And by design, every problem is solvable on decade old computers in a reasonable amount of time (seconds) so parallelism is great if you're looking to minimize the runtime, but it's never necessary.
- codr7 2y agoI very much enjoy the cat and mouse game of assumptions regarding part 2, it always makes me happy when the second part is just a simple adaptation of the existing solution.
- mvdtnz 2y agoFor those just glancing at the chart do note the scale is logarithmic, so the difficulty increases exponentially.
- kwertyoowiyop 2y agoEither the problems are getting easier each year, or perhaps there are just more people participating which drives down the 100th-place times.
- tails4e 2y agoI usually make it Monday 18 or 19 and then I loose the will as the time taken is excessive, and obsessing about it is not good. I've finished a 5 years, but all after the fact. Some I am not sure I'll ever finish....
- smcl 2y agoAh yeah I've been there! Having done it a few years now, I've found that the approach that works for me is: if it starts looking like I'll be stuck on one for more than a few hours, I'll skip it and move on. Otherwise I'll accumulate an insurmountable backlog that becomes more of a depressing chore to think about, than a fun little christmas tradition. I'd rather have a mostly-complete set of problems by the end of the year that I can come back and clean up when I feel like it. That said, if you'd have a better holiday season by just stepping back from the computer and relaxing then that sounds great too. Either way - enjoy!
- chucksmash 2y agoMy main complaint the last time I did this (2022) was the havoc it wreaked on my sleep schedule. Advent of Code is not kind to East Coast participants. Every year except for one has been kind of the same pattern for me: Day 1: this year, I'm just going to solve the problems. No futzing around. Day 3: but it would be kind of neat to turn the solutions into a reusable AoC library. Just something minimal. Day 5: and I should really add a CLI harness for retrieving the problems and parsing the input files. Day 6: and testing of course. Day 7: maybe I'll skip today's problem (just for today) and keep improving the framework. Day 358: oh neat, Advent of Code is coming up.
- smcl 2y agoI'm in CET so time-wise it can be ok - problems open at 6am meaning if I get up I have about an hour around before I need to walk my walk my dog and get ready for work. But switching on at that time is really hard, the amount of stupid off-by-one errors, or referring to since-renamed-but-still-present functions in my Jupyter Notebook is not even funny. But I luckily managed to avoid the "reusable AoC library" problem around 2019 when a week beforehand I wrote down the sort of functions I wanted to have at my disposal (usually things around representing 2D/3D grids of unknown size and pathfinding/debugging therein, but a few other bits and pieces) and made a simple library that I will sometimes add things to after I'm done with the problem for the day. I was tempted to some functions (similar to those your CLI harness provided) for retrieving test data and submitting answers but I managed to stop myself short of that! But I am sure you're far from the only one to end up down that road.
- oweiler 2y agoI will probably solve the first 7 puzzles like every year and then just stop.
- rikroots 2y agoThis is my experience. After the first week I develop an intense hatred of all things Elf and start swearing at my laptop. At which point I give up to stop my mental health deteriorating any further.
- danielovichdk 2y agoHahaha...I love this comment. I have just been stuck for a week doing edge puzzles and backstepping recursion, keeping myself awake aye night because it bothered me I couldn't "just" solve it.
- ryukoposting 2y agoLikewise. I did it one year in college and it became a life-consuming thing almost immediately. Not AoC's fault - part of it was depression, part of it was the Minnesota winter. Now that I have a full-time job and a wife, I'm trying to be more careful with those things that I know will suck me in.
- JackMorgan 2y agoAll things in moderation! Now if I can just make it through the winter without installing the new Factorio DLC...
- mrwww 2y agothis comment actually prompted me to finally download and install the factorio demo, been hearing so many things about how it takes over lives! :)
- hollerith 2y agoSo, you want it to take over your life?
- mrwww 2y agoNo, I want it to be great, and if it takes over lives, then surely it must be great.
- JackMorgan 2y agoIt really is such a great game! I got the base game, beat it a few times, then my partner and I played a few mods, currently in an Angels+Bobs playthrough. So much replay value
- Tyr42 2y agoI've been playing half an hour each morning before the rest of the family wakes up. Just finally made it to the volcano world
- SketchySeaBeast 2y agoIt ate my life for a few years in a row, I even managed to finish on Christmas eve twice. Now I don't even look, it turns from fun to stress rather quickly.
- moomin 2y agoOnly year I ever completed it it took eight months. I’m not seeing my name on a leaderboard any time soon.
- SketchySeaBeast 2y agoOh yeah, me neither. The competition is far too intense. What takes me hours takes the competitors minutes.
- codr7 2y agoI actually made somewhat of an effort this time, made sure I was awake in good coding shape when the problem was released. Had a scaffold set up for running the code based on previous years. And I'm a pretty decent all-round coder, should be by now. Ended up at around spot 6500. Boggles my mind to even imagine what it would take.
- jodrellblank 2y agoYou can see videos of what it takes; Jonathan Paulson makes the leaderboard often with Python and puts videos of him doing it on YouTube; he made positions 25 and 40 on day 1 this year and here is his video: https://www.youtube.com/watch?v=ym1ae-vBy6g https://www.youtube.com/watch?v=ym1ae-vBy6g
- codr7 2y agoNice. I can move that fast, faster even, when I know exactly where I'm going. I imagine if I was doing this kind of problem solving all day every day it would be possible.
- brightball 2y agoWe run a private board for Advent of Code for the Carolina Code Conference. Eligibility for prizes starts after earning only 10 of 50 possible stars precisely for this reason.
- flanbiscuit 2y agoOh cool. I live in WNC and had just missed your last conference in August. Is it possible to join multiple private boards? I usually do one with my coworkers as well
- sokoloff 2y agoYou can only “own” one board, but you can join many.
- brightball 2y agoYep. I’m running a little behind but the announcement will come out later today on our site/email list. https://carolina.codes https://carolina.codes
- alach11 2y agoThat's awesome. We do the exact same thing for prize eligibility on my work leaderboard. The whole point is for it to be fun and challenging. No need to grind to the end unless you want to.
- bmitc 2y agoOne reason I didn't enjoy it was that I felt the days don't build on each other well. So you get little code reuse. It was continually changing requirements, so it was especially like work.
- Jtsummers 2y agoIn 2019 he built up about 12 challenges using a VM, for Intcode, you had to construct. It was poorly received because without a working version (developed over the first few Intcode challenges), you couldn't solve the rest of them. He hasn't done anything like that since, though I thought it was probably the more interesting series of challenges. The problem with continuity across days is that the later days can be blocked by the earlier ones, as they were in 2019. That partly defeats the purpose (or structure) of the challenge, where you can mostly pick any day and try it without regard to earlier days or prior years.
- hoistbypetard 2y agoI agree. Intcode was fun, but completely destroyed the promise of skipping a day and still having fun with later puzzles. I didn't come to enjoy it until much later.
- wjholden 2y agoI agree that it wasn't completely well-received, and I think this is a real shame. The stated goal of Advent of Code was always to make better programmers. Extending, maintaining, and testing large systems is an important part of real-world engineering efforts. I thought the IntCode thing was great and I hope to see something like that again this year.
- timeon 2y agoPeople are skipping days? I usually drop out when I'm stuck on some day. 2019 was my favorite.
- Jtsummers 2y agoMost years I've skipped a couple days and revisit them later. Usually just because I give myself 1-2 hours limit to avoid staying up too late working on them, and unless it's the weekend I don't always have time during the next day to wrap them up. No reason to stop just because of a single blocker.
- adventofshmode 2y agoI got stuck on the graph-cut puzzle for FOUR MONTHS. I had to write a force-directed graphing engine to find the longest three edges to cut. After I solved it I looked at other people's solutions and they used Meta's proposition solver in about 10 lines. Seemed like a massive cheat to me.
- moustachehedron 2y agoOh man, this is my best memory of last year's AoC. After uselessly noodling for a while, I used Graphviz to draw the graph to an SVG file. It drew two messy balls of yarn neatly connected by three edges. My script still says "TODO: find a real solution". Good times.
- jjnoakes 2y agoI have a self-imposed goal of not using third-party libraries for any of the solve logic. It feels more satisfying to do it myself, even if it takes longer.
- wjholden 2y agoWhat solver are you referring to? I've used z3 and OR-tools, but I find it so difficult to model problems in either one that I seldom get good usage of either one.
- tialaramex 2y agoLike Minecraft, everybody should play it however they want, it's just a game. Which one was the "graph-cut puzzle" ? I've had a few where I couldn't do them on the day, either I was busy or I found them harder than usual or sometimes both. It looks like in 2023 I took until almost New Year's Eve to finish, but until like the 21st of December I was fine, I got thrown off by travel and other commitments in the last few days as they got more difficult.
- evah 2y agoThis was the day 25 problem: given a graph of ~1600 nodes and ~3500 edges, find the 3 edges that if deleted divide the graph into 2 components. I looked over some of the solutions and it surprised me how few used the simplest method: for each edge with endpoints u, v in the graph, delete it and then find another path P1 between u and v. Then, for each edge e1 in P1, delete it and then find another path P2 between u and v. Then, for each edge e2 in P2, delete it and then try to find another path between u and v. If there is no path, (u, v), e1, e2 is your cut-set. Otherwise, add e2 back and try the next edge in P2. When you've exhausted P2, add e1 back and try the next edge in P1. When you've exhausted P1, add (u, v) back and try the next edge in the graph. It's 3-6 loops deep depending on how you count, but it works. My python implementation completes in under 2 minutes, but it varies because it appears the standard python data structures have some nondeterminism, and I may have had a lucky draw with my puzzle input.
- rak1507 2y agoWhat's so hard about Day 12? It's just +/'{x:".",x;H:(-1+;1+i-)@'+|\m*i:!#m:x=\:"#." R:(x=x)({[h;d;x;y;z](z#0),+\(((-z)_~"#"=x)&z_d>z)*(*y),(-z+1)_y-0^y h}. H)[x]/y (*|R)-R@*|0,&1_*+m}.''1({("?"/:5#,x;,/5#,y)}.')\@[;1;.:]'" "\:'0:`:i/12.txt
- Jorge1o1 2y agoIs this Q? or k?
- icen 2y agoLooks like K to me!
- rak1507 2y agoIt's k4, the underlying language behind Q. With slight modifications it also runs in ngn/k which is FOSS. https://ngn.codeberg.page/k/#eJxVjsFugzAMhu95iiyWik1CIGPtIVGXHnvm2lA2qdLKgcsOU6C0z77QcZkt65c//7ZcMu+9BgBulFE106l7lvYAeoUe/mWideK7ZTXtJu9S/C0xs7Jn6D9druzUNl0B8GvwWr0mc2Cst9x0uAkPVCIEQY/SElT24/P764cbJsvsFq3QQkV3tFgY6YzsCzpkcg5D3tsXGGzcBytAC8Ybi3EfCW+nq7u46EY3tThBRUoGRCwm6h4CRLJspu7yPlGO+UgqDaShbiyq88ivd82PdIptOTKO+dxQ0RzyuVIb0+VyuOssM3hD4UW5hfSWWmSkxCkcTs44bdtMcBGy/hdgfU9G https://ngn.codeberg.page/k/#eJxVjsFugzAMhu95iiyWik1CIGPtIVG...
- meisel 2y agoThis is what programming languages looked like to me before I learned programming
- gcanyon 2y agoAny idea how close that is to valid J code?
- 7thaccount 2y agoMy limited understanding is that K and J are very different, despite both being in the same language family. I found K a lot easier to grasp when I was playing with both languages years ago.
- globular-toast 2y agoThe year I did it I got lucky and solved them all within a reasonable amount of time until there was one that suddenly involved a lot of nontrivial linear algebra and I immediately spotted that this wouldn't be fun and noped out. Noticed the number of people solving dropped off a cliff on that day. I think as nerds we need to be quite careful not to get too drawn into this kind of thing. Sometimes it's like a superpower, but other times it just pointlessly consumes your life. Kinda makes me think of gambling addiction: "when the fun stops, you stop".
- 9witz 2y agoYou can also set a time rule. For me it's 45min, if it takes longer to solve it, I an allowed to quit. It's totally worth it, though, especially for the first week, when you look up how other people solved the thing you just solved. I always learned (or re-learned) something from that. IMHO there's not that much value in looking up solutions before you solved it yourself, though.
- anonzzzies 2y agoI just have them lingering in the back of my brain the whole year. I solved the last one from last year a month ago. This is much nicer than sudokus or whatever: I sometimes dream about them and I keep finding better (in my mind) solutions for ones from years ago. It's lovely when you sit at another dumb crap meeting/standup so you have something to do in your head.
- nja 2y ago> I can really enjoy the winter break from work What line of work are you in that you can take a winter break, and furthermore, that you can actually not work during that break? I'm envious... I've always wanted to do AoC but on top of work it is too much.
- atribecalledqst 2y agoI get the week between Christmas and New Year's off and then I take a bunch of my PTO in December. It's not an official break or anything.
- __loam 2y agoLots of people (in tech at least) take time on top of mandatory vacation that can result in like 2 weeks of time.
- LandR 2y agoDeveloper here. I'm off from 13 Dec to 6 Jan this year. PRevious years I've managed basically the entire month of December. I always have holiday days left over at the end of the year to take.
- istjohn 2y agoHeh, I just checked. That's where I got stuck last year, too. I solved the first half.