Added article AoC2021-Day0
Signed-off-by: Louis Vallat <louis@louis-vallat.xyz>
This commit is contained in:
parent
d933650332
commit
dcab374962
73
src/aoc-2021-jour-0-commencement.md
Normal file
73
src/aoc-2021-jour-0-commencement.md
Normal 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.
|
||||||
|
|
@ -143,10 +143,6 @@ em, i {
|
|||||||
font-style: italic;
|
font-style: italic;
|
||||||
}
|
}
|
||||||
|
|
||||||
.articles {
|
|
||||||
margin-left: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
footer {
|
footer {
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
margin-bottom: 100px;
|
margin-bottom: 100px;
|
||||||
@ -171,12 +167,6 @@ code {
|
|||||||
font-family: 'IBM Plex Mono', monospace;
|
font-family: 'IBM Plex Mono', monospace;
|
||||||
}
|
}
|
||||||
|
|
||||||
.date {
|
|
||||||
display: inline;
|
|
||||||
margin-left: 10px;
|
|
||||||
font-style: italic;
|
|
||||||
}
|
|
||||||
|
|
||||||
@media screen and (max-width: 992px) {
|
@media screen and (max-width: 992px) {
|
||||||
body {
|
body {
|
||||||
margin-right: 10vw;
|
margin-right: 10vw;
|
||||||
|
Binary file not shown.
After Width: | Height: | Size: 511 KiB |
@ -1,6 +1,5 @@
|
|||||||
#### Articles
|
#### Articles
|
||||||
|
|
||||||
<ul class="articles">
|
- [Advent of Code 2021 Jour 0 : le commencement](./aoc-2021-jour-0-commencement.html) - *17/01/2022*
|
||||||
<li><a href="git_flow.html">Git Workflow</a><p class="date">10/05/2021</p></li>
|
- [Git workflow](./git_flow.html) - *10/05/2021*
|
||||||
</ul>
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user