Added article AoC2021-Day0

Signed-off-by: Louis Vallat <louis@louis-vallat.xyz>
This commit is contained in:
Louis Vallat 2022-01-17 09:11:40 +01:00
parent d933650332
commit dcab374962
No known key found for this signature in database
GPG Key ID: 0C87282F76E61283
4 changed files with 75 additions and 13 deletions

View File

@ -0,0 +1,73 @@
# AoC 2021 Jour 0: Commencement
> Le début d'une grande aventure !
Cette année, j'ai découvert l'[Advent Of Code](https://adventofcode.com/).
Ce site géré de manière bénévole par [Eric Wastl](http://was.tl/) sur son temps
libre met à disposition des puzzles sur un thème différent d'une année sur
l'autre. Ces petits puzzles sont à résoudre à l'aide d'un programme informatique
ou d'un algorithme que l'on est sensé imaginer et mettre en oeuvre, pour, à partir
d'un fichier d'entrée qui nous est propre, donner un résultat à troquer sur le site
du challenge en échange d'une étoile. Le langage et la manière d'obtenir le
résultat sont libres, mais faire les défis "à la main" est rarement possible
(en tous cas en temps humain). Pendant tout le mois de décembre, un défi est publié
chaque jour du 1er au 25. Ils sont systématiquement découpés en 2 parties, la
seconde n'étant accessible qu'une fois la première résolue.
En échange d'une réponse valide au problème, une étoile nous est donnée, pour avoir
un total de 50 étoiles par an.
Il n'y a pas de pénalité si le puzzle n'est pas résolu dans la journée, mais un
*leaderboard* est disponible, et les 100 premiers à résoudre les puzzles obtiennent
des points sur leur profil. C'est comme cela que j'ai découvert qu'il existait
une discipline de [Programmation Compétitive](https://en.wikipedia.org/wiki/Competitive_programming).
Cette année, le thème c'était la quête de la clé du traîneau du Père Noël au fond
d'une crevasse sous-marine, armé d'un petit sous-marin, et rencontrant au passage
une faune et flore locale diverse.
![Vue de l'intérieur d'un sous-marin d'exploration. Photo par Michael Mrozek pour Unsplash.](./assets/images/aoc-2021-day-0/michal-mrozek-BEUd36I1-f8-unsplash.jpg)
J'ai déjà résolu les 25 jours et obtenu mes 50 étoiles, je souhaite maintenant
raconter ici mon aventure, jour après jour, et les algorithmes que j'ai mis en
place.
## Pourquoi
J'ai choisi de participer à cet évènement pour différentes raisons :
- j'aime les défis, je trouve amusant et plaisant d'avoir un but à atteindre en code
- je voulais m'exercer, j'aime travailler sur des projets sur mon temps libre
## Comment
Mes algorithmes sont implémentés en [Rust](https://www.rust-lang.org/), un langage
que j'aime beaucoup, pour différentes raisons qui sont hors sujet par rapport à
cette série d'articles. Un article spécifique sur ce qui me plaît dans ce
langage de programmation arrivera peut-être plus tard.
Mon but était de résoudre les puzzles en temps limité, si possible en moins d'une
journée, et que le programme final donne sa réponse le plus rapidement possible.
Si après 3 jours à travailler sur un puzzle, il donne une réponse en 300ms, cela
me convient. **Le but n'étant pas ici de faire des algorithmes optimaux.**
Chaque jour a été mis à disposition sur [gitlab](https://gitlab.com/lovallat/advent-of-code-2021).
## Beurk
Vous trouvez le code illisible ? C'est **normal**.
J'ai tendance dans mes programmes à avoir de mauvaises habitudes, *hostiles* à
la relecture de code. J'ai tendance à utiliser par exemple des variables dont le
nom se résume à une unique lettre. J'ai aussi tendance à vouloir produire un
fichier source le plus court possible (tout en respectant les standards du langage
utilisé). Le code fourni est alors un bloc compact **difficile à lire**.
J'ai donc décidé de me faire subir le même sort que celui réservé à mes collègues
lorsqu'il doivent relire mon code, afin de me faire **perdre** ces mauvaises
habitudes. (*spoiler: c'était efficace*)
## À suivre
Seront publiés sur ce blog différents articles retraçant et expliquant jour après
jour ce que mes algorithmes et programmes font pour résoudre les différents défis.

View File

@ -143,10 +143,6 @@ em, i {
font-style: italic;
}
.articles {
margin-left: 10px;
}
footer {
font-size: 14px;
margin-bottom: 100px;
@ -171,12 +167,6 @@ code {
font-family: 'IBM Plex Mono', monospace;
}
.date {
display: inline;
margin-left: 10px;
font-style: italic;
}
@media screen and (max-width: 992px) {
body {
margin-right: 10vw;

Binary file not shown.

After

Width:  |  Height:  |  Size: 511 KiB

View File

@ -1,6 +1,5 @@
#### Articles
<ul class="articles">
<li><a href="git_flow.html">Git Workflow</a><p class="date">10/05/2021</p></li>
</ul>
- [Advent of Code 2021 Jour 0 : le commencement](./aoc-2021-jour-0-commencement.html) - *17/01/2022*
- [Git workflow](./git_flow.html) - *10/05/2021*