Journal Advent of code 2024

Posté par  . Licence CC By‑SA.
Étiquettes :
9
30
nov.
2024

Comme chaque année, certains attendent avec impatience le jour suivant pour découvrir la prochaine case de leur calendrier de l'Avent, espérant y trouver du chocolat ou d'autres produits imaginés par les marketeurs.

Pour ma part, je préfère les petits défis de programmation proposés par Advent of Code 2024.
https://adventofcode.com/2024

Chaque jour, en résolvant ces petits problèmes de code, vous aurez la satisfaction de sauver Noël. En réalité, l'histoire importe peu. Ce qui compte, c'est de relever chaque jour un nouveau (…)

Forum Programmation.autre Advent of Code 2023, jour 25

Posté par  . Licence CC By‑SA.
Étiquettes :
4
25
déc.
2023

Hello et joyeux Noël à tous.

Ce jour ci comme les années précédentes, il n'y a qu'une seule partie pour le challenge de l'AOC.

On se donne un réseau de câbles comme celui donné en exemple.

jqt: rhn xhk nvd
rsh: frs pzl lsr
xhk: hfx
cmg: qnr nvd lhk bvb
rhn: xhk bvb hfx
bvb: xhk hfx
pzl: lsr hfx nvd
qnr: nvd
ntq: jqt hfx bvb xhk
nvd: lhk
lsr: lhk
rzs: qnr cmg lsr rsh
frs: qnr
(…)

Forum Programmation.autre Advent of Code 2023, jour 24

Posté par  . Licence CC By‑SA.
Étiquettes :
2
24
déc.
2023

Dans ce problème, on a un ensemble de grêlons qui se déplacent dans un espace en 3 dimensions.
Ces grêlons ont une position initiale et une vitesse de déplacement.

Voici l'exemple.

19, 13, 30 @ -2,  1, -2
18, 19, 22 @ -1, -1, -2
20, 25, 34 @ -2, -2, -4
12, 31, 28 @ -1, -2, -1
20, 19, 15 @  1, -5, -3

Les trois premiers nombres sont les coordonnées initiales du grêlon (px, py, pz) et (…)

Forum Programmation.autre Advent of Code 2023, jour 23

Posté par  . Licence CC By‑SA.
Étiquettes :
2
23
déc.
2023

Ce jour ci, il faut trouver son chemin dans un labyrinthe.
Le labyrinthe est composé de plusieurs types de tuile:
des chemins ".", des forêts "#" et des pentes dans une direction "", ">", "v", "<".
Dans la partie 1, on n'a pas le droit d'aller dans le forêt et on n'a pas le droit de remonter une pente.

Le but n'est pas ici de trouver un plus court chemin mais un plus long chemin dans le labyrinthe. Évidemment (…)

Forum Programmation.autre Advent of Code 2023, jour 22

Posté par  . Licence CC By‑SA.
Étiquettes :
1
22
déc.
2023

Dans le problème du jour, on a des briques, comme au Tetris mais en 3 dimensions.
Chaque brique est composée de plusieurs cubes tous alignés dans une certaine direction (selon la hauteur, la largeur ou la profondeur).
Voici l'exemple

1,0,1~1,2,1
0,0,2~2,0,2
0,2,3~2,2,3
0,0,4~0,2,4
2,0,5~2,2,5
0,1,6~2,1,6
1,1,8~1,1,9

Chaque brique est donnée par les coordonnées x,y,z de ses deux extrémités et séparés par un "~".
La première ligne représente une brique composé de 3 cubes de coordonnées (1, 0, 1), (1, 1 (…)

Forum Programmation.autre Advent of Code 2023, jour 21

Posté par  . Licence CC By‑SA.
Étiquettes :
1
21
déc.
2023

Pour le problème de ce jour, on se donne une grille composée de rochers, de jardins et d'un point de départ.

L'exemple est le suivant:

...........
.....###.#.
.###.##..#.
..#.#...#..
....#.#....
.##..S####.
.##..#...#.
.......##..
.##.#.####.
.##..##.##.
...........

Les "." représentent les jardin, les "#" représentent les rochers et S est la position de départ.

Le but de la partie 1 est de compter le nombre de positions où le jardinier peut arriver en partant de la tuile de départ et en (…)

Forum Programmation.autre Advent of Code 2023, jour 20

Posté par  (site web personnel) . Licence CC By‑SA.
Étiquettes :
1
20
déc.
2023

Nous sommes toujours sur l'île du désert. Grâce aux pièces détachées reçues de l'île du métal, triées avec notre aide, les lutins ont pu réparer leurs machines et cherchent maintenant à les démarrer.

Première partie

Les machines sont commandées par un système de communication très lutinesque, c'est à dire complexe à souhait : il est constitué de modules reliés les uns aux autres, et qui fonctionnent un peu comme des portes logiques électroniques qui s'envoient des signaux bas ou hauts.

(…)

Forum Programmation.autre Advent of Code, jour 19

Posté par  . Licence CC By‑SA.
Étiquettes :
1
19
déc.
2023

Pour ce problème, nous avons deux choses.

Tout d'abord, des pièces de machine qui ont chacune 4 évaluations: une évaluation x, une évaluation m, un évaluation a et une évaluation s. Chaque évaluation est représenté par un entier.

Par exemple, une pièce peut avoir l'évaluation suivante:
{x=787,m=2655,a=1222,s=2876}

Ensuite, viennent les workflows. Un workflow est une série de tests sur les évaluations d'une pièce. Un résultat positif pour un test peut soit faire accepter la pièce, soit la faire rejeter, soit (…)

Forum Programmation.autre Advent of Code, jour 18

Posté par  . Licence CC By‑SA.
Étiquettes :
1
18
déc.
2023

Pour ce jour ci, le type d'input est le suivant

R 6 (#70c710)
D 5 (#0dc571)
L 2 (#5713f0)
D 2 (#d2c081)
R 2 (#59c680)
D 2 (#411b91)
L 5 (#8ceee2)
U 2 (#caa173)
L 1 (#1b58a2)
U 2 (#caa171)
R 2 (#7807d2)
U 3 (#a77fa3)
L 2 (#015232)
U 2 (#7a21e3)

C'est une liste d'instructions pour creuser.
Le premier symbole indique dans quelle direction il faut aller (L pour gauche, R pour droite, U pour haut, D pour bas) (…)

Forum Programmation.autre Advent of Code, jour 17

Posté par  . Licence CC By‑SA.
Étiquettes :
0
17
déc.
2023

Le problème d'aujourd'hui prend en entrée une grille composée de chiffres.
L'exemple donné est le suivant:

2413432311323
3215453535623
3255245654254
3446585845452
4546657867536
1438598798454
4457876987766
3637877979653
4654967986887
4564679986453
1224686865563
2546548887735
4322674655533

Le but est d'acheminer de la lave qui démarre à la tuile en haut à gauche à une usine de pièces de machines dont la localisation est la tuile en bas à droite.

Il s'agit donc de trouver un chemin (un creuset) dans la grille. Seulement le chemin a les contraintes (…)

Forum Programmation.autre Advent of Code, jour 16

Posté par  . Licence CC By‑SA.
Étiquettes :
0
16
déc.
2023

Le sol est de la lave

Ce problème prend en entrée une grille composées de différentes tuiles:
- la tuile vide ("."),
- les mirroirs ("/" et "\")
- et les diviseurs ("|" and "-").

Par exemple, on a la grille suivante.

.|...\....
|.-.\.....
.....|-...
........|.
..........
.........\
..../.\\..
.-.-/..|..
.|....-|.\
..//.|....

Dans la partie 1, un faisceau de lumière commence du bord en haut à gauche et se dirige vers la droite.

  • Lorsque le faisceau rencontre une tuile vide (…)

Forum Programmation.autre Advent of Code, jour 15

Posté par  (Mastodon) . Licence CC By‑SA.
Étiquettes :
1
15
déc.
2023

Remettre la production de lave en route

D'accord, j'ai été un peu rapide dans mon interprétation d'hier, on avait simplement focalisé la lumière du soleil vers le chambre de fusion.
Là il faut calibrer les lentilles de focalisation pour condenser les rayons au maximum et faire, enfin, fondre la roche.

Première étape : courir après un renne qui a piqué une page du manuel.

Pour ça on va calculer une sorte de hash d'une série d'instructions du type :

rn=1,cm-,qp=3,cm=2,qp-,pc=4,ot=9,ab=5,pc-,pc=6,ot=7

(…)

Forum Programmation.autre Advent of Code, jour 14

Posté par  (Mastodon) . Licence CC By‑SA.
Étiquettes :
1
14
déc.
2023

Jour 14, tout en haut des nuages

À partir de demain nous allons redescendre, il n'y a plus d'île au-dessus de l'île de lave, donc une fois que la lave se remettra à couler, on va retourner en arrière pour tout remettre en marche.
On imagine déjà devoir faire s'écouler la lave vers les bonnes sources chaudes, et activer les bonnes machines pour fabriquer les bonnes pièces, pour réparer les autres machines pour envoyer du sable pour filtrer l'eau, pour (…)

Forum Programmation.autre Advent of Code 2023, jour 12

Posté par  (Mastodon) . Licence CC By‑SA.
Étiquettes :
1
12
déc.
2023

Nous arrivons enfin aux sources chaudes !

On laisse de côté l'Onsen, le bain chaud à l'asiatique, agréable et reposant.
On va plutôt aller à côté, vers un bâtiment qui ressemble à un gros bloc de métal tout moche, et froid.

Froid ?
Ben oui, on s'attendait à quoi !
La lave ne s'écoule plus pour chauffer les sources froides…

Pour aller réparer ça, on doit grosso-modo s’asseoir sur un geyser et se faire propulser vers l'île du magma.
Sauf (…)