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.
Advent Of Code
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
- Follow the programming.dev instance rules
- Keep all content related to advent of code in some way
- If what youre posting relates to a day, put in brackets the year and then day number in front of the post title (e.g. [2023 Day 10])
- When an event is running, keep solutions in the solution megathread to avoid the community getting spammed with posts
Relevant Communities
Relevant Links
Credits
Icon base by Lorc under CC BY 3.0 with modifications to add a gradient
console.log('Hello World')
I just discovered this so I'm unprepared. I'll just go in with c# and try to have some fun.
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.
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).
That’s super cool! Thanks for sharing
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.
I'm doing Python! Decided to catch up with what's new in Python itself and the ecosystem (e.g. poetry, pytype, etc.)
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.
This will be my first time participating, I'll be using Nim.
I'll also be using Nim this year!
Nice! Have you used it before? I found it a long time ago, but never had a good opportunity to learn it.
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.
Awesome! I'm looking forward to trying it out 🙂
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.
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 :)
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
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.
I’m going to try and do it in English this year. Wish me luck y’all!
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.
J A V Ahhhh
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.
Will try to use Godot-Rust for my two loves :)
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)
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.
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.
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.
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.
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
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
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.
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.