Suite de l'Avent du Code, jour 4.
Les lutins se répartissent les tâches ménagères et constatent qu'ils ont du travail en commun…
Suite de l'Avent du Code, jour 4.
Les lutins se répartissent les tâches ménagères et constatent qu'ils ont du travail en commun…
# un bout de AWK
Posté par steph1978 . Évalué à 4.
Problème assez trivial aujourd'hui
partie 1
partie 2
[^] # Re: un bout de AWK
Posté par 🚲 Tanguy Ortolo (site web personnel) . Évalué à 5.
C'était en effet parfaitement taillé pour Awk !
[^] # Re: un bout de AWK
Posté par steph1978 . Évalué à 4.
Oui, quand la plus grosse partie est de lire l'input ligne à ligne, de la tailler en colonne, de mettre ça dans des variables puis de faire un petit calcul, c'est du pain béni pour AWK :)
C'est quand il faut construire et manipuler des structures de données complexe que Python prend sa revanche.
[^] # Re: un bout de AWK
Posté par 🚲 Tanguy Ortolo (site web personnel) . Évalué à 3.
C'est tout à fait ça. Mais à vrai dire, dès que le problème que je cherche à résoudre n'est pas un truc jetable, en particulier lorsqu'il s'agira de le montrer à d'autres ou de revenir dessus, j'utilise de moins en moins Awk.
Je trouve en effet que, sauf quand c'est vraiment très simple, ça donne quelque chose de très peu compréhensible à la lecture ou à la relecture.
[^] # Re: un bout de AWK
Posté par steph1978 . Évalué à 3.
Oui je dirai que ce n'est pas un langage qui passe à l'échelle, en nombre de lignes et en nombre de contributeurs.
C'est un langage de niche : manipuler de la donnée tabulaire avec concision et une bonne perf. En AWK t'es facilement à 1M/s
Moi ça m'a sauvé les miches lors d'une mise en production de nuit, d'un système assez critique et assez coûteux aussi. On devait insérer 20M d'enregistrements dans la base. Sauf que les données de départ (xml) étaient loin d'être propre. Si on arrive pas à initialiser la DB, on repousse la MEP.
J'ai du retailler et retravailler des lots d'enregistrements pour faire du rampup (lots de plus en plus gros tant que ça passe) et de la reprise sur erreur. Je peux dire qu'à ce moment là, au milieu de la nuit, t'es content de pouvoir exprimer facilement un petit traitement itérer rapidement et produire le résultat super vite.
# En Python
Posté par 🚲 Tanguy Ortolo (site web personnel) . Évalué à 4.
En Python, en utilisant une classe dédiée (je trouve que ça se lit mieux ainsi) :
# un peu de sh
Posté par Gil Cot ✔ (site web personnel, Mastodon) . Évalué à 1. Dernière modification le 12 décembre 2022 à 01:39.
Pour la première partie.
Je ne sais pas pourquoi ça m'a fait penser à
seq
etjot
(que j'ai déjà eu à mentionner.)L'écriture en extension a été inspiré par l'exemple donné
…mais j'utilise un séparateur car on peut avoir des nombre de plusieurs chiffres
,2,3,4, 2-4
,6,7,8, 6-8
Après il suffit de vérifier qu'une des deux sous-chaines est dans l'autre. :)
Ici j'ai utilisé les possibilités de substitution et expansion du shell, mais on peut faire appel à une autre commande pour plus de lisibilité.
Noter que l'on peut utiliser
seq
etjot
sans option-s
puis rediriger dans un fichier distinct puis appliquercomm
aux deux fichiers comme déjà vu.Exceptionnellement, je mentionne deux commandes non POSIX mais répandues (cependant la syntaxe du script demeure sans bashism.) On peut remplacer par une fonction maison pour plus de portabilité.
Dans tous les cas, on traite le problème en peu de lignes avec les outils disponibles. :)
“It is seldom that liberty of any kind is lost all at once.” ― David Hume
[^] # Re: un peu de sh
Posté par Gil Cot ✔ (site web personnel, Mastodon) . Évalué à 2. Dernière modification le 12 décembre 2022 à 02:02.
Pour la seconde partie ce fut un peu plus tricky car il faut trouver un moyen de comparer deux listes ou tableaux (première idée qui m'est venue.) J'ai initialement pensé à faire appel à
dc
mais c'est plutôt cryptique en plus d'être lent.Finalement, on peut partir sur la dernière piste précédemment évoquée.
Il est à noter que, comme pour pierre-feuille-ciseau, il est possible d'utiliser l'évaluation arithmétique du shell.
Maintenant paye ton moins.
“It is seldom that liberty of any kind is lost all at once.” ― David Hume
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.