HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
Bogdanp
awesome-advent-of-code
Markdown2018–2021
Bogdanp / awesome-advent-of-code · Archived

awesome-advent-of-code

A collection of awesome resources related to the yearly Advent of Code challenge.

3Distinct people
4Mentions
1Explicit recommenders
3.2KGitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

A collection of awesome resources related to the yearly Advent of Code challenge.

GitHub

Where it is used

No documented product use has been verified yet.

What people are saying

This is great advice. This is how I learned. When you’ve completed a puzzle (and not before!) check out how others solved it here…

w4tson used a recommendation phrase. One indexed comment matches. This is a phrase match, not a verdict.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

No other repository is repeatedly linked in the same discussions.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 5:04:57 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year4 dated mentions

Observed mentions: 2018-12-01 07:04:56 UTC to 2021-12-05 18:49:22 UTC.

012018-01-01 00:00:00 UTC to 2019-01-01 00:00:00 UTC (exclusive): 1 mentions; 1 submissions, 0 comments20182019-01-01 00:00:00 UTC to 2020-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments20192020-01-01 00:00:00 UTC to 2021-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2021-01-01 00:00:00 UTC to 2022-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2021

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20182018-01-01 00:00:00 UTC2019-01-01 00:00:00 UTC110
20192019-01-01 00:00:00 UTC2020-01-01 00:00:00 UTC101
20202020-01-01 00:00:00 UTC2021-01-01 00:00:00 UTC101
20212021-01-01 00:00:00 UTC2022-01-01 00:00:00 UTC101

What Hacker News says

4 sources
That's great! I very briefly went through the introductory docs, but otherwise I just dove right in. The language is really simple, the tough part is wrapping your head about immutability. There's an awesome repo with examples in pretty much every language [1], I go there afterwards to learn how other people did it. It's amazing to see so many different ways of approaching the problem. My solutions are also public [2], but bear in my I'm still only a few days in to learning Elixir! If you do want to try attacking AoC with Elixir, I suggest you research and understand these concepts, it's more than enough to get you going: - Pattern matching. The "=" sign is _not_ an assignement, it's trying to fill the shape of the variables on the left with the stuff on the right. - The pipe operator "|>", the return value of the previous function is imp
Read the rest
licitly as the first paramter of the next function, it makes it easy to build chains. - There is no "return". Use small functions with `case` statements, or function overloading. The last value in a function is implicitly the return value, like in Rust. - Enum.map(), filter(), reduce(), zip(), chunk(), these functions largely get you through the manipulation of data. The first three are very popular in JS. - Immutability. There's no mutating data, hence why you need reduce() for example. - There are no loops, instead, get used to doing recursion. hd(), tl() are useful for this. - Anonymous functions `fn a, b -> a + b end`, there is also a shorthand form `&(&1 + &2)`, and you can also pass functions by reference `&sum/2` - The "/1", "/2", ... after a function is the arity, it's not scary, it just means the number of paramters that it takes. - Function overloading is amazing, it's like pattern matching. If you provide constants in the function declaration, it will only be called if those constants match: ``` def factorial(0), do: 1 def factorial(n) when n > 0, do: n * factorial(n - 1) ``` I find the above really elegant. It's correct, the special case for "0" is very explicit, and if you try a negative number, Elixir will simply be unable to match the given problem to a function definition (n < 0), which makes more sense than throwing "BadArgument" errors/exceptions. If you really want to just solve problems, I advise sticking with Python, there's nothing wrong with it. Most languages also provide a lot of functional concepts, I'm sure Python is no exception (with some libraries). Be prepared that functional languages require you to think differently, but it is really fun to do things in a functional way! Good luck! [1]: https://github.com/Bogdanp/awesome-advent-of-code [2]: https://github.com/MarcusCemes/advent-of-code-2021
In Three Ways to Debug Code in Elixir

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.