On va pouvoir partir en expĂ©dition dans la jungle. Enfin, demain. Peut-ĂȘtre. Pour le moment, comme nous avons beaucoup d'expĂ©rience avec ces machins, les lutins nous ont refilĂ© un transmetteur pĂ©tĂ©, il faut le rĂ©parer.
Forum Programmation.autre Avent du Code, jour 6
PostĂ© par đČ Tanguy Ortolo (site web personnel) .
Licence CC ByâSA.
6
déc.
2022
# En Python
PostĂ© par đČ Tanguy Ortolo (site web personnel) . ĂvaluĂ© Ă 4.
Le fait que mes fonctions mangent un itérable de chaßnes vient des fonctions utilitaires que j'ai codées pour intégrer ça facilement. Ici, ça donne quelque chose d'un peu artificiel puisqu'il n'y a qu'une ligne à lire.
Je ne suis pas du tout satisfait par le fait de transformer Ă chaque fois un bout glissant de la chaĂźne d'entrĂ©e en un ensemble. J'aimerais bien faire quelque chose d'un peu mieux optimisĂ©, mais je n'ai rien de probant en tĂȘte.
[^] # Re: En Python
PostĂ© par alkino . ĂvaluĂ© Ă 2.
J'ai simplement fait un ring buffer :
[^] # Re: En Python
PostĂ© par đČ Tanguy Ortolo (site web personnel) . ĂvaluĂ© Ă 3.
Ăa n'optimise rien du tout, si ?
Je veux dire, nous avons tous deux la ligne entiĂšre en mĂ©moire, mais lĂ oĂč j'en prends Ă chaque fois une tranche pour la convertir en ensemble et regarder sa longueur, tu enfonces un par un chacun de ses caractĂšres dans une file Ă taille limitĂ©e, que tu convertis en ensemble pour regarder sa longueur.
Quoique, ça évite une copie de chaßne à chaque étape, c'est ça ? La file à taille limitée étant persistante et ne copiant qu'un caractÚre à chaque fois.
[^] # Re: En Python
PostĂ© par Yth (Mastodon) . ĂvaluĂ© Ă 3.
Franchement, je ne fais pas mieux.
Toute optimisation semble compliquer terriblement le code.
Et vu la taille des données...
C'est quoi la citation Ă propos des optimisations trop tĂŽt dans le code ? :)
[^] # Re: En Python
PostĂ© par steph1978 . ĂvaluĂ© Ă 2.
Pas mieux
[^] # Re: En Python
PostĂ© par steph1978 . ĂvaluĂ© Ă 4.
Ma premiĂšre solution Ă©tait Ă base de deque et n'utilisait pas set. L'idĂ©e Ă©tant que si tu as dĂ©doublonnĂ© la fenĂȘtre prĂ©cĂ©dente, et tu as un nouveau caractĂšre, seul celui-ci peu crĂ©er un doublon. Donc au lieu de tout dĂ©doublonner (set), tu dĂ©doublonnes que par rapport Ă ce nouveau caractĂšre.
Voici:
Mais honnĂȘtement, c'est bien plus compliquĂ© pour pas grand chose.
Faudrait faire du profilage cpu et ram pour comparer mais sur la taille de mon input et avec la commande
time, rien de visible. Et je crains que construire un set de 14 caractÚres ne soit pas plus coûteux que de manipuler la deque et et le filter.# un bout de AWK
PostĂ© par steph1978 . ĂvaluĂ© Ă 4. DerniĂšre modification le 06 dĂ©cembre 2022 Ă 20:14.
Finalement une solution en AWK, pas si moche quand on a pas de "set".
# en Go
PostĂ© par Colargol . ĂvaluĂ© Ă 2.
Je suis à la bourre, j'ai pris du retard sur le n°5. J'ai trouvé celui ci plus facile, solution en Go (fonction principale) :
Suivre le flux des commentaires
Note : les commentaires appartiennent Ă celles et ceux qui les ont postĂ©s. Nous nâen sommes pas responsables.