this post was submitted on 30 Nov 2023
25 points (100.0% liked)

Advent Of Code

763 readers
1 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 2023

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

What language(s) will you be using? Will you be trying anything different this year to usual?

top 31 comments
sorted by: hot top controversial new old
[–] [email protected] 7 points 11 months ago

I am planning to use Rust this year to refresh my knowledge after having not used it for six months or so. I'm contemplating doing some solution visualisation this year, as I'm always impressed by that when others do it - but very much time availability dependent.

[–] [email protected] 6 points 11 months ago

I just discovered this so I'm unprepared. I'll just go in with c# and try to have some fun.

[–] [email protected] 5 points 11 months ago

This'll be my first year, and I'll use Rust. I'm still a student so idk how it'll go (especially for my choice in lang), but I'll try my best.

[–] [email protected] 5 points 11 months ago (1 children)

I've done it with a new language each year in the past, but this year I decided to do it with stuff I'm very familiar with - with an added twist: I have to visualize something for each day.

So I built myself a little app/puzzle harness that serves up the sample/puzzle input and provides some boilerplate so I can just write the x-data for a new Alpine.js module for each day. Then I setup d3 and plan to visualize something for each day using it. For example, I just settled on a simple bar graph (final value of each row) for each part of day 1:

Hoping once it inevitably gets to grids and such, I can do something more interactive. Would love to have something where I can animate or manually step through each step of the solution (such as the pathfinding algorithm last year).

[–] [email protected] 1 points 11 months ago

That’s super cool! Thanks for sharing

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

Nobody doing python? It is my first time participating so I think I’ll try it out my strongest language first. I think if I were to try something else it would be Go, to brush up, or Typescript, which I’ve been wanting to learn but haven’t really had an application for, yet.

[–] [email protected] 1 points 11 months ago (1 children)

I'm doing Python! Decided to catch up with what's new in Python itself and the ecosystem (e.g. poetry, pytype, etc.)

[–] [email protected] 1 points 11 months ago

Nice. I’m a long time fan of poetry, but I’m trying out a couple new tools too. Been wanting to check out ruff to replace flake8. And mypy, cause I’ve never worked on a project that used a type checker, though there hasn’t really been much for it to do on the solutions I’ve hammered out so far.

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

This will be my first time participating, I'll be using Nim.

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

I'll also be using Nim this year!

[–] [email protected] 1 points 11 months ago (1 children)

Nice! Have you used it before? I found it a long time ago, but never had a good opportunity to learn it.

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

I have! I think I started using it around this time last year after having started AOC2022 with golang and wanting to wade into other languages. Nim is super versatile and I've enjoyed using it for some toy applications.

[–] [email protected] 1 points 11 months ago (1 children)

Awesome! I'm looking forward to trying it out 🙂

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

Friendly tip as you go, the nim stdlib documentation is extensive albeit a bit hard to peruse. The index is your friend. And folks on the discord/forum are pretty helpful.

[–] [email protected] 2 points 11 months ago

Thank you so much! I'll check out the index and discord/forums.

So far I'm having a lot of fun with Nim, the syntax is clean and readable, but it's very flexible and capable :)

[–] [email protected] 3 points 11 months ago

I’m going to try to use both zig and gerbil. Usually i use clojure, so might fallback to that as well. I started doing puzzles from 2015 this week, and that’s been fun so far

[–] [email protected] 3 points 11 months ago

Probably C++, Zig, and possibly Clojure (the latter two maybe after solving it in C++ to compare how I might approach the problems differently in them). Not going for speed in coming up with solutions, mainly will try out various libraries I might not have touched before or rarely used, and brush up on newer C++ standard features.

[–] [email protected] 3 points 11 months ago

I’m going to try and do it in English this year. Wish me luck y’all!

[–] [email protected] 2 points 11 months ago

Gonna roll with typescript. In past years I did the challenges at midnight, but would only last a few days before giving up. This year I think I’ll do the challenges while at work / the day after.

[–] [email protected] 2 points 11 months ago

J A V Ahhhh

[–] [email protected] 2 points 11 months ago

I’m doing it in ocaml this year because a friend is doing it in ocaml and they asked me to do it in ocaml so they can see how I do it(this is my first time ever programming in ocaml(last year I was doing it in Haskell)). I’m also in general trying to restrict the amount of recursion I use to force me to use library functions.

[–] [email protected] 2 points 11 months ago

Will try to use Godot-Rust for my two loves :)

[–] [email protected] 2 points 11 months ago* (last edited 11 months ago)

I'm participating for the first time, using C.

I forgot about this until the 2nd, so I'm a bit behind but oh well.

(Also my day 1 solution is absolutely not optimised haha, especially when I read up to a whole line just to search for a string which is a maximum of 5 characters)

[–] [email protected] 1 points 11 months ago* (last edited 3 months ago)

I've decided to catch up with what's new in Python (language itself and the ecosystem). I've set up a repository with pyproject.toml, and git hooks configured, and I'm running pylint, pytype and pytest.

[–] [email protected] 1 points 11 months ago

Using C primarily, as before. I'm not sure if I'll do all days this time, the later days tend to take up much time and stress me out.

[–] [email protected] 1 points 11 months ago (1 children)

I haven't coded anything in about a decade now (I ended up moving from CS to math), but decided to give this all a shot.

Since I don't have any sort of environment or anything to work in, I just downloaded Python and am trying to wrangle Notepad++, the Windows Shell, and the Python interpreter into helping me remember what I'm doing.

[–] [email protected] 1 points 11 months ago

I really highly recommend using VSCode or PyCharm Community Edition (both free of charge). It'll make your life a lot easier out of the box.

[–] [email protected] 1 points 11 months ago

It's my first time participating, and I'll be sticking with Java since I'm getting ready to interview, but might switch to Go midway through if I get bored

[–] [email protected] 1 points 11 months ago

Using Kotlin. I switched careers to Android development almost 2 years ago, and maybe it's my first "real" language, I really like Kotlin and IntelliJ. I've been wanting to learn low-level stuff, too, maybe I'll try C or C++. Or C# since that's what my backend devs use. But this year's puzzles have been pretty intense, so maybe I'll wait on that

[–] [email protected] 1 points 11 months ago

My strongest languages, in no particular order, are Go, Python, JavaScript, and modern PHP (with types and all that jazz).

I’ve decided to go with JavaScript this year because over the last 15 years, they’ve been working on JavaScript like it’s the cure for cancer. They’ve added so much syntactic sugar to JavaScript in recent years, that I can develop solutions in fewer lines of code.

That said, for day one, I did separate implementations in JavaScript and Go. With Go, I leveraged the built-in support for testing, benchmarking, and profiling to look at the flame graph and figure out where I could optimize performance.

I’ve been wanting to learn both Rust and server-side Swift. I figure that during my time off over the holidays, I can practice porting my JavaScript solutions over to those other languages.

[–] [email protected] 1 points 11 months ago

This is my first time participating and I initially thought I would do one different language per day (I don't know how feasible that is, I'll probably run out of "common" languages early on and on the twenty-fifth find myself writing in some old obscure dialect of BASIC if I make it that far :D), but since I started 3 days late (I only learned about this event then), I have some catching up to do, so I think I'll write the ones I'm behind on in python, because that's what I'm quickest and most familiar with, since I don't think I will be able to catch up writing in the other languages.