Suite de l'Avent du Code, jour 2.
Les lutins et le PÚre Noël jouent à pierre-feuille-ciseaux pour déterminer qui dormira le plus prÚs de la réserve de nourriture. Un lutin nous a donné un genre d'antisÚche pour optimiser notre façon de jouer, et on doit compter les scores que ça donnerait.
# En Python bref
PostĂ© par đČ Tanguy Ortolo (site web personnel) . ĂvaluĂ© Ă 4.
Toujours en Python, mais aujourd'hui, point de modélisation objet, c'est du concis, plus en mode calcul :
[^] # Re: En Python bref
PostĂ© par Yth (Mastodon) . ĂvaluĂ© Ă 3.
Sur celui-là , j'ai vachement modélisé au contraire :
Et la résolution est triviale derriÚre :
[^] # Re: En Python bref
PostĂ© par đČ Tanguy Ortolo (site web personnel) . ĂvaluĂ© Ă 3. DerniĂšre modification le 07 dĂ©cembre 2022 Ă 14:52.
Waouh. C'est pour le moins original ça.
Si je comprends bien, ça fait de
~une opération pour récupérer la valeur normalisée. Bien joué le(valeur % 3) or 3, c'est bien plus lisible que(valeur - 1) % 3 + 1.La valeur qui me vainc et la valeur que je vaincs, si je ne m'abuse.
Je suis plus infĂ©rieur Ă un autre si la valeur qui me vainc est la mĂȘme que la valeur normalisĂ©e de l'autre. Et mutatis mutandis pour la supĂ©rioritĂ©. Tu aurais pu utiliser functool.total_ordering().
Ensuite, le reste est assez simple Ă comprendre, une fois ces bases posĂ©es. La rĂ©utilisation des opĂ©rateurs est... intĂ©ressante. Je ne peux pas dire que je suis fan, c'est un peu bizarre Ă lire quand mĂȘme.
Tiens, j'ignorais la possibilité d'instancier un dictionnaire avec des mots-clefs. C'est amusant, ça aussi.
[^] # Re: En Python bref
PostĂ© par Gil Cot â (site web personnel, Mastodon) . ĂvaluĂ© Ă 1.
C'est Ă©trange ; c'est l'inverse pour moi ...qui ne pense pas assez en Phyton (et ai pratiquement beaucoup de langages oĂč on retrouve la derniĂšre forme)
On dirait que c'est Ă©crit par quelqu'un qui pratique/rĂ©flĂ©chi le/en OCaml ou peut-ĂȘtre Lisp ou Scheme...
"It is seldom that liberty of any kind is lost all at once." â David Hume
[^] # Re: En Python bref
PostĂ© par Yth (Mastodon) . ĂvaluĂ© Ă 3.
J'ai fait du Caml, j'ai jouĂ© un peu avec OCaml, et mĂȘme un poil de Lisp Jadis, mais je ne code pas rĂ©guliĂšrement dans ces langages lĂ .
Réutiliser les opérateurs, c'est bien pour jouer, mais ça peut péter complÚtement la lisibilité, donc il faut faire trÚs trÚs attention quand on veut partager le code...
Bien fait c'est génial par contre.
[^] # Re: En Python bref
PostĂ© par Yth (Mastodon) . ĂvaluĂ© Ă 3.
J'aime bien réutiliser les opérateurs, mais j'ai fait ça assez rapidement, donc la pertinence est celle d'un truc pondu en vingt minutes.
Le
~chifumiest pratique et plutÎt lisible, comme ça on normalise tout le temps.Par contre réutiliser la classe
chifumipour qu'elle représente une choix ou un résultat d'affrontement, c'est plutÎt moche, ça rendrait illisible un code plus gros, et c'est totalement lié à la présentation de la seconde partie du problÚme aprÚs la résolution de la premiÚre : comment bricoler vite fait du code qui répond à la question. C'était plus simple de rajouter un opérateur à une classe existante que de gérer une nouvelle classe.Mais en plus propre on pourrait avoir une classe
resultatd'affrontement, qui sait se multiplier (par exemple) avec une classechifumi, avec__mul__et__rmul__, pour pouvoir fairechifumi * resultat = resultat * chifumi = "mais qu'a donc jouĂ© mon adversaire ?"On apprends Ă
resultatĂ se multiplier dans les deux sens avecchifumisans que celle-ci sache comment se multiplier avecresultat.On pourrait garder le mĂȘme opĂ©rateur partout, et faire du
__mod__et__rmod__surresultat. Sachant que dans tous les cas on retourne un score qui est un entier et n'a rien à voir avec aucune des deux classes.Pour le total_ordering, c'est vrai, mais en pratique j'ai implémenté
__lt__qui n'est jamais utilisé. J'aurais pu nettoyer ça du code avant de le poster.# if vs modulo
PostĂ© par Colargol . ĂvaluĂ© Ă 3.
J'avoue que je suis passé à cÎté de la subtilité du modulo et que j'ai bouriné en énumérant les cas possible (nimage).
[^] # Re: if vs modulo
PostĂ© par Gil Cot â (site web personnel, Mastodon) . ĂvaluĂ© Ă 1. DerniĂšre modification le 08 dĂ©cembre 2022 Ă 11:04.
Y a que neuf cas équitablement répartis, donc on peut se permettre d'énumérer au lieu de sortir l'artillerie lourde à mha.
"It is seldom that liberty of any kind is lost all at once." â David Hume
# petit bout de AWK
PostĂ© par steph1978 . ĂvaluĂ© Ă 5.
# en shell bref
PostĂ© par Gil Cot â (site web personnel, Mastodon) . ĂvaluĂ© Ă 1.
Juste pour la premiĂšre partie
C'est une bĂȘte Ă©numĂ©ration exhaustive des cas, un peu comme la solution en AWK, mais en Ă©tant un peu plus lĂąche sur le formatage du fichier.
"It is seldom that liberty of any kind is lost all at once." â David Hume
[^] # Re: en shell bref
PostĂ© par Gil Cot â (site web personnel, Mastodon) . ĂvaluĂ© Ă 1.
Juste pour la seconde partie
MĂȘme principe, juste qu'on calcule autrement.
"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.