Comme nous sommes plusieurs à nous intéresser à l'Avent du Code et qu'il ne me semble pas pratique d'échanger dans un seul journal, c'est parti pour un sujet par jour.
Jour 1 donc, les lutins débarquent avec leurs sacs plein de trucs à grignoter. Ma solution suit, en Python…
# En Python classieux
Posté par 🚲 Tanguy Ortolo (site web personnel) . Évalué à 4. Dernière modification le 01 décembre 2022 à 14:10.
Du code commun aux deux parties, essentiellement pour modéliser et importer les données :
Première partie, on veut le total de l'énergie du sac qui en contient le plus :
Deuxième partie, on veut le total de l'énergie des trois sacs qui en contiennent le plus :
Je ne suis pas très satisfait par le fait de trier les totaux, j'aurais bien aimé faire ça en parcourant simplement les sacs, mais je n'ai pas trouvé de façon élégante de le faire.
[^] # Re: En Python classieux
Posté par 🚲 Tanguy Ortolo (site web personnel) . Évalué à 4.
(Oui, j'aime bien modéliser avec des classes, même quand ça n'a aucun intérêt pratique.)
# En mode 10 minutes
Posté par François GUÉRIN (Mastodon) . Évalué à 1.
[^] # Re: En mode 10 minutes
Posté par François GUÉRIN (Mastodon) . Évalué à 1.
[^] # Re: En mode 10 minutes
Posté par Yth (Mastodon) . Évalué à 2. Dernière modification le 07 décembre 2022 à 10:08.
Ma solution vite faite.
# Excel…
Posté par Anthony Jaguenaud . Évalué à 4.
Heu,
Moi je l’ai fait pendant une réunion avec Excel :-[
Copier/Coller les données, premiére colonne, si pas vide alors j’additionne avec le résultat au dessus, si vide alors 0.
Colonne suivante (ligne 1) recherche du max…
Pour la deuxième étoile, j’ai refait pareil en mettant également un
si == max précédent
.C’est grave docteur ?
[^] # Re: Excel…
Posté par Gil Cot ✔ (site web personnel, Mastodon) . Évalué à 2.
c'est Excel-lent, mais Calc-hurler est mieux.
ceci dit, tout les chemins mènent à l'avant…
“It is seldom that liberty of any kind is lost all at once.” ― David Hume
[^] # Re: Excel…
Posté par Anthony Jaguenaud . Évalué à 3.
Certe, mais en réunion avec l’ordi du boulot c’est dur d’hurler ;-)
[^] # Re: Excel…
Posté par Gil Cot ✔ (site web personnel, Mastodon) . Évalué à 2. Dernière modification le 02 décembre 2022 à 16:21.
Tiens, on attend la version en bouleau… :-D
“It is seldom that liberty of any kind is lost all at once.” ― David Hume
# un bout de AWK
Posté par steph1978 . Évalué à 4. Dernière modification le 04 décembre 2022 à 11:26.
à passer dans ce pipe:
awk -f script.awk < input | sort -rn | head -3 | awk '{S+=$1}END{print S}'
[^] # Re: un bout de AWK
Posté par steph1978 . Évalué à 3.
Tient aussi en un onliner
awk 'NF==0{print a;a=0}{a+=$1}END{print a}' < input | sort -rn | head -3 | awk '{S+=$1}END{print S}'
mais peut être moins lisible 😝# un bout de shell…
Posté par Gil Cot ✔ (site web personnel, Mastodon) . Évalué à 1.
…POSIX pour l'argent
Le fichier de sortie permet de simplifie d'une part (c'est faisable de tout faire en mémoire mais c'est plus de code pas forcément lisible) et sert de contrôle d'autre part. (c'est ce qui a permis de détecter une petite erreur subtile corrigée par le
echo >>"$_if"
) Ainsi, avec l'exemple donné dans l'énoncé, il contient :Le stockage du rang n'est pas forcément utile dans l'immédiat mais ça me permet de savoir le numéro de la ligne renvoyée en résultat.
“It is seldom that liberty of any kind is lost all at once.” ― David Hume
[^] # Re: un bout de shell…
Posté par Gil Cot ✔ (site web personnel, Mastodon) . Évalué à 1.
(Batterie à plat, j'ai du attendre de rentrer pour écrire cette seconde partie.)
Pour l'or, je modifie la fin en remplaçant la dernière ligne par :
Il s'agit de scripts en mode dix minutes (mais en ayant passé le temps sur les inputs checks hum) …et ça se ressent
Je pense que les nombreuses rediretions de sortie dans la première boucle n'aident pas ; une première amélioration serait de tout écrire une fois. Il faudra profiter de ce refactoring pour inverser les paramètres d'entrée 2 et 3…
“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.