this post was submitted on 02 Dec 2024
30 points (100.0% liked)

Advent Of Code

913 readers
95 users here now

An unofficial home for the advent of code community on programming.dev!

Advent of Code is an annual Advent calendar of small programming puzzles for a variety of skill sets and skill levels that can be solved in any programming language you like.

AoC 2024

Solution Threads

M T W T F S S
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 18 20 21 22
23 24 25

Rules/Guidelines

Relevant Communities

Relevant Links

Credits

Icon base by Lorc under CC BY 3.0 with modifications to add a gradient

console.log('Hello World')

founded 1 year ago
MODERATORS
 

It's not my first choice, but it's gonna be TypeScript for me. I've got an interview for a primarily TS position coming up this week so would like to brush up on its quirks.

If the interview doesn't go well, then I'll probably switch to Go, though hehe. I've been really enjoying using it, but no one's ever paid me to do so.

top 40 comments
sorted by: hot top controversial new old
[–] [email protected] 2 points 2 hours ago (1 children)

I use too many nice languages for my day to day at work, so I'm gonna be a real piece of shit to myself and try and solve it in Godot's gdscript. Not that there's anything wrong with gdscript, I'm just pampered by all the niceties of Typescript and Groovy.

[–] [email protected] 1 points 59 minutes ago (1 children)

Rofl, does that mean you'll be running your code using the game engine? Sounds like a fun exercise anyway. Probably don't spend much time manipulating strings in gdscript normally

[–] [email protected] 1 points 31 minutes ago

Yeah I think I can technically run it headless, but for the most part I think the whole game engine runs in the background. Should be interesting to see how it turns out.

[–] snowe 3 points 13 hours ago (1 children)

I always default to ruby, even though I want to learn tons of other languages. Sometimes I do it in multiple languages, I might try Elixir again.

[–] [email protected] 1 points 6 hours ago

Ruby is such an enjoyable language to write it. It really feels like they thought about the developer's experience when designing that language

[–] [email protected] 2 points 14 hours ago (1 children)

I was doing vanilla JavaScript and using code sandbox, because I was doing it with my coworker.

But now I'm considering switching to Typescript.

[–] [email protected] 1 points 6 hours ago

TS is a great way to write JS, and one of the nice things about it is you get to choose exactly how much of it you want to use.

You can even just change your file extension from js to ts, compile it with tsc file.ts or run it directly with tsc-node file.ts.

[–] [email protected] 4 points 22 hours ago (1 children)

Python

Not my first, second, or third choice. But I’m in between moves and have very limited access to my desktop (even remotely/SSH) so I need the simplest tool for the job.

[–] [email protected] 3 points 18 hours ago (1 children)

I feel kind of silly working on my 100 line implementation, where someone will just Python up a 3 line solution and call it a day. It's definitely a good tool for the job.

[–] [email protected] 2 points 5 hours ago

I don’t think you need to feel silly. Programming languages are tools. Some are better suited for jobs than others.

AoC is good for two skills:

  1. Learning how to solve problems.
  2. Learning how to process and model data.

With python #2 is no longer difficult. In the past I’ve used Rust or C and I spent way more effort on #2 than #1.

I think the key is what is your goal in doing this? I like the puzzles but have limited time so I use python to solve them quickly and be on my way. If I had more time i would have liked to learn / try go this year.

[–] Mikina 16 points 1 day ago
[–] [email protected] 3 points 1 day ago

C++ because I forgot to plan for anything else, so I'm just reusing what I had from last year

[–] Andy 3 points 1 day ago
[–] [email protected] 3 points 1 day ago

Julia, since I used it for some projects this year but never for something "time critical" like AoC with a new problem each day. I really like that it's simple like python but with strong typing. Originally I wanted to use Ocaml to learn it, but on day 1 I realised I don't know how to do anything in it yet 😄.

[–] [email protected] 3 points 1 day ago

Going with rust for the second year, I'm still trying to learn things with it and AoC is a great way to do so

[–] [email protected] 2 points 1 day ago
[–] [email protected] 10 points 1 day ago (1 children)

Nix, because I hate myself. No, it is very much not made for this purpose. But it's possible to use if for this.

[–] [email protected] 4 points 1 day ago (1 children)

I've seen a couple people attempt this. Am very curious about how exactly that will be done. Although I'll have to say that i've seen far worse and/or more difficult submissions. People cook up absolutely insane code

[–] [email protected] 2 points 1 day ago

True. I love how AoC is a hotbed for creative and/or insane ways of solving coding problems.

If you wanna check out how it goes in Nix: https://git.sr.ht/~kintrix/aoc2024

[–] [email protected] 5 points 1 day ago

Still going with C as my main language with the 'straight to the point', data and array centric style that's worked well before. Perhaps see if I can get some of it running on Turbo C again. Also fiddling around with JavaScript now for list comprehension variants and was eyeing Elixir but that's probably not happening this year.

[–] [email protected] 7 points 1 day ago (2 children)

I've started with Go, but I think I've realised AoC isn't for me. I feel so incredibly dense.

[–] andioop 5 points 14 hours ago

After solving puzzles and seeing other peoples' elegant solutions while mine feels brutish and ugly (even if our approaches use the same algorithm, mine is inevitably less elegantly-implemented), I also feel too stupid for AoC sometimes.

But hey, I am never going to get less stupid if I don't try, and solving problems the ugly way is still a solution. I have fun doing it.

But if it's not just the comparison to others ruining your fun, if it's that you inherently do not find this activity enjoyable, don't force yourself!

[–] [email protected] 7 points 1 day ago (1 children)

That's fair if you aren't having fun, but I wouldn't write it off completely. Like I only made it to day four last time.

The problems they present are of a totally different class to what most programmers will ever encounter in the "real world."

Once you get more used to the style of the problems (data structures and algorithms (DSA), like what you might see on leetcode), then you honestly start to have fun with them.

I really struggled with DSA until recently, so if you'd like some help I would be happy to give you some pointers.

[–] [email protected] 3 points 1 day ago (1 children)

Thanks. I felt very deflated after struggling with something seemingly so simple. I was using Go and couldn't figure out part 2, at least without nesting loops three layers deep.

Today I decided to try to learn Elixir instead and allowed myself some assistance from Claude.ai, which was much more fun.

[–] [email protected] 3 points 1 day ago (1 children)

Nesting loops is indeed the first intuition anyone would have to that problem. The only reason I knew to use a hashmap data structures is because I practiced on exactly these kinds of problems, and looked up explanations and answers on the most basic stuff imaginable.

I felt very deflated after struggling with something seemingly so simple.

Definitely not simple. Especially without training in DSA. You shouldn't expect yourself to spontaneously invent efficient algorithms to problems that have been stumping students for decades.

Try it out yourself for maybe 30 minutes, then do yourself a favour and look up a good explanation to solving it.

My hope for this year is that we can help eachother understand and solve these problems. I'd love to find some good "editorials" on each problem, breaking them down in detail.

[–] [email protected] 3 points 1 day ago (1 children)

Yes, I guess I held myself to too high expectations. I haven't even studied CS and learned programming on my own... I've been trying to do some exercises and a few courses on algorithms but of course that can't be compared to going to university. Thanks for the tip, I won't spend hours in frustration in the coming days for sure. Maybe I should post my attempts even though they are incomplete or fail, to spark discussion.

[–] [email protected] 3 points 15 hours ago

I would love to see some attempts and discuss alternatives, improvements, etc

[–] [email protected] 7 points 1 day ago

I've got a really nice setup with benchmarks, auto-input-fetching and solution upload and such, written in Rust, so I'm sticking with that. I kinda wanted to try Odin, but december really snuck up on me, and I didn't have time to set it up or really get familiar with it.

Iterators and slicing and such are all just... so nice for parsing streams.

[–] [email protected] 5 points 1 day ago

I’ve solved the first two in Rust, and will likely keep going until I can’t anymore, just like with previous years. It’s a fun language, and i’d love some practice too

[–] [email protected] 4 points 1 day ago

My „comfort language“ Kotlin and Python, because I really got to refamiliarize myself with that language. I probably won‘t have the time to do much more than that, but if I do, I‘d love to try to solve the problems with a Minecraft datapack.

[–] [email protected] 3 points 1 day ago (1 children)

Typescript with Deno. Was thinking of trying Gleam but I don’t know if I’d have the time to do it in a new language and Deno is just so nice anyway lol

[–] [email protected] 2 points 1 day ago

I've enjoyed Deno in the past. Similarly, I've heard good things about Bun, though haven't used it myself.

[–] [email protected] 2 points 1 day ago

R, because I’ve already used Python, VBA, and Excel formulas.

[–] [email protected] 1 points 1 day ago

Nim, because it's fast and expressive.

[–] [email protected] 2 points 1 day ago

Golang, just for learning a new language. But I’m a bit time constrained so I don’t expect I’ll be able to complete every day.

[–] [email protected] 2 points 1 day ago (1 children)

J, because I've wanted to learn it for a long time. It scratches kind of the same itch as my old HP 48 calculator, actually, although that was much closer to Forth than APL. Both of them are mind-bendingly terse and not great at expressing things other than raw mathematics.

[–] Andy 1 points 14 hours ago (1 children)

Have you had a good look at Factor? FWIW I've got at least the first 3 days with it up here.

[–] [email protected] 2 points 3 hours ago

I've been reading your solutions! I have not spent any time with Factor at all, but the solutions you've put up look very nice and clean.

[–] hosaka 1 points 1 day ago

Been trying to pick up zig, so made sense to try the AoC with it as well.

[–] [email protected] 2 points 2 days ago

I've tried using vyxal 3, and while I was able to solve day1 part 1, part 2 still eludes me. I know what I have to do but I haven't been able to coax the language into doing what I want it to, probably because it's a wholly different paradigm from praclangs.