This commit is contained in:
parent
1d8bb2e327
commit
61f813710e
1 changed files with 48 additions and 0 deletions
48
content/blog/haskell/advent-of-code-2024-in-haskell.md
Normal file
48
content/blog/haskell/advent-of-code-2024-in-haskell.md
Normal file
|
@ -0,0 +1,48 @@
|
|||
---
|
||||
title: Advent of code 2024 in Haskell
|
||||
description: I sharpened my Haskell skills again this year
|
||||
date: 2025-07-24
|
||||
tags:
|
||||
- Haskell
|
||||
---
|
||||
|
||||
## Introduction
|
||||
|
||||
I participated in [advent of code 2024](https://adventofcode.com/2024) in
|
||||
Haskell: it was a fun experience as always! Why writing about this now? Because
|
||||
I just finished the last puzzle!
|
||||
|
||||
I did the first 12 puzzles each day last December but then life happened and I
|
||||
could no longer complete one puzzle per day. I only finished the first 19
|
||||
puzzles by Christmas then took the usual long break. I picked up this challenge
|
||||
again about a month ago while waiting at the airport and have now completed the
|
||||
last one.
|
||||
|
||||
## Haskell for puzzles
|
||||
|
||||
Usually this kind of article is an opportunity to explain some of the patterns I
|
||||
used and things I learned. Solving these puzzles was a lot of fun as always.
|
||||
|
||||
The puzzles were interesting, my favorite one being day 24 in which you need to
|
||||
debug a binary adder. It is made of logic gates with a few wires that have been
|
||||
inverted and need to be fixed. It was the hardest challenge for me by far and I
|
||||
only solved it when I realized that instead of needing to simulate wire
|
||||
permutations I could try to build the adder from the pool of logic gates that
|
||||
were available. When I could not find a gate I needed, it meant I had to look
|
||||
for a wire to swap.
|
||||
|
||||
I also thoroughly enjoyed day 21 where you need to input codes via proxy robots
|
||||
and need to compute a very convoluted shortest path algorithm where the key was
|
||||
careful usage of memoization.
|
||||
|
||||
I will also make a special mention for day 13 where the problem can be reduced
|
||||
to a system of linear equations. I love an excuse to whip out a matrix
|
||||
triangularization to achieve this, but I doubly loved that I could use the
|
||||
Rational type to deal with exact ratio numbers computations. Haskell really
|
||||
shines in these situations!
|
||||
|
||||
## Conclusion
|
||||
|
||||
I recommend tackling this kind of challenge, it is good to maintain or develop
|
||||
proficiency in a programming language. I love Haskell, I wish I could use it
|
||||
daily and not just for seasonal puzzles.
|
Loading…
Add table
Add a link
Reference in a new issue