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 défi de programmation qui vous procurera votre dose quotidienne de dopamine. Ces défis sont organisés par difficulté croissante. Traditionnellement, on y trouve :
Pour chaque problème, il y a deux étoiles à gagner. La première est généralement simple, tandis que la deuxième représente souvent une mise à l'échelle du même problème qui remet complètement en cause votre manière d'aborder le sujet.
des problèmes de tri,
des problèmes arithmétiques (somme de suites, résolution de systèmes linéaires, etc.),
des problèmes de recherche de chemin,
de la trigonométrie en 2D, puis en 3D,
et bien d'autres.
Advent of Code est aussi une compétition. Les plus courageux se lèveront à 6h (heure de Paris) pour gagner les étoiles. Personnellement, je commence à 8h00. À ce sujet, il y a un leaderboard actif depuis 2 ans que vous pouvez rejoindre : 1844559-f65dbf07.
Je vous souhaite une bonne fin d’année et de joyeuses lignes de code à tous !
# J'y participe
Posté par Guillaume.B . Évalué à 2 (+2/-0).
Comme les années précédentes, j'y participe.
Cette année, ce sera en Rust contrairement aux années précédentes où c'était en Haskell.
Je ne me lèverai pas non plus à 6h. Trop tôt pour moi.
# 1er jour
Posté par steph1978 . Évalué à 3 (+1/-0).
D'habitude, je commence avec AWK et je poursuis en Python plus tard quand ça devient plus compliqué. Là, j'ai dû sortir Python le premier jour. Ce n'est pas de bon augure pour la suite.
[^] # Re: 1er jour
Posté par jtremesay (site web personnel) . Évalué à 5 (+3/-0). Dernière modification le 01 décembre 2024 à 13:30.
En vrai, une fois que t'as le prototype python, c'est assez facile de faire la version awk
(désolé, y'a pas de balise spoiler)
[^] # Re: 1er jour
Posté par steph1978 . Évalué à 3 (+1/-0).
En effet, si je regarde mon code python, ça donnerai le code que tu proposes.
Cependant
asort
est spécifique GNU AWK et pas dispo dans mawk. Je pense que c'est ce qui m'a inconsciemment fait partir sur Python.[^] # Re: 1er jour
Posté par Laurent Mazet (site web personnel) . Évalué à 3 (+3/-0).
Voici un code de asort pour mawk que j'utilise depuis 2012.
function alength(A, n, val) {
n = 0
for (val in A) n++
return n
}
function asort(A, hold, i, j, n) {
n = alength(A)
for (i = 2; i <= n ; i++) {
hold = A[j = i]
while (A[j-1] > hold) {
j--
A[j+1] = A[j]
}
A[j] = hold
}
delete A[0]
return n
}
[^] # Re: 1er jour
Posté par jtremesay (site web personnel) . Évalué à 2 (+0/-0). Dernière modification le 03 décembre 2024 à 19:48.
maintenant je suis curieux. Une raison de ne pas utiliser gawk ? Pas de sectarisme de ma part, j'utilise très peu awk et je me contente d'utiliser celui installé par défaut :D
[^] # Re: 1er jour
Posté par steph1978 . Évalué à 2 (+0/-0).
Gawk a des fonctionnalités supplémentaire : support du csv, fonctions de tri, support des extensions - ce qui peut permettre de traiter du xml par exemple, paramétrage du tri des énumérations de clé des tableaux associatifs.
Tout ceci n'est pas présent dans la spécification d'origine.
[^] # Re: 1er jour
Posté par barmic 🦦 . Évalué à 4 (+2/-0).
C'est moins la possibilité que pour le fait de ne pas tirer parti du fonctionnement de awk que je ne suis pas parti là dessus.
Première étoile je l'ai fais avec un tableur, seconde étoile je n'ai pas compris comment me servir correctement du tableur donc c'était en shell (awk/grep/awk), les premiers jours pour moi c'est toujours juste histoire de trouver le résultat sans chercher à faire du "vrai" code.
J'ai même pas décidé quel sera mon langage cette année. J'avais pensé à julia, mais je ne l'ai même pas encore installé.
https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll
# vous aurez la satisfaction de sauver Noël
Posté par woffer 🐧 . Évalué à 5 (+4/-0).
même pas sûr qu'on y arrive :
# 2ème jour - on apprend à lire l’énoncé
Posté par steph1978 . Évalué à 2 (+0/-0). Dernière modification le 02 décembre 2024 à 10:49.
La différence max est 3, pas 2. Une différence de 0 est "unsafe".
En AWK aujourd'hui avec quelques boucles imbriquées. Pour éviter celle que rajoute la partie 2, je pré-processe l'input pour faire des blocs.
# 3ème jour
Posté par barmic 🦦 . Évalué à 4 (+2/-0).
Je crois que c'est la première fois que je fais le troisième jours encore en CLI (je commence à CLI tant que je trouve artificiel d'utiliser un langage plus sophistiqué). Première et seconde étoiles avec un one-liner chacun.
https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll
[^] # Re: 3ème jour
Posté par steph1978 . Évalué à 3 (+1/-0).
Pareil, petit coup de "oulah on va soufrir" en regardant l'input puis en lisant les instruction, un coup de regexp et awk et c'est torché.
Envoyer un commentaire
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.