[Perl] Structure de données

Patrice Karatchentzeff patrice.karatchentzeff at gmail.com
Ven 10 Mai 09:12:29 CEST 2024


Salut,

J'ai une question... qui dépasse un peu le cadre directement de la
programmation en Perl. C'est la structure de données de mes
programmes.

Aujourd'hui, j'ai un truc qui fonctionne, mais qui ne me plait pas,
car je suis obligé de dupliquer mes données dans mon programme et je
voudrais les centraliser, de façon in fine à pouvoir les passer
éventuellement en paramètres, sous une forme ou une autre.

Mon script prend des données sous forme de paires. J'ai donc une liste
de paires et je traite ensuite en interne chaque paire dans une
moulinette. J'ai besoin de faire des stats à l'issue du traitement de
la paire, donc de rattacher des valeurs de statistique à chaque paire.

J'ai une autre contrainte. La traitement n'est pas égal pour chaque
paire : il est pondéré. Cela veut dire que certaines paires doivent
être moulinées plus souvent. Pour le moment, je m'en sors (et c'est là
qu'est l'os) en écrivant une liste de ces paires en dupliquant
certaines paires plusieurs fois. Puis en tirant au sort un numéro dans
cette liste de paires. Par exemple, si la paire A est dupliquée 3 fois
dans une liste de 10 paires, elle a statistiquement 30% de chance
d'être choisie contre 10% pour les autres. Cela fonctionne bien.

Mon problème est comment décrire une fois pour toutes mes données (et
éventuellement pouvoir les externaliser de mon script) avec ces
conditions ? Une liste de paires pondérées.

Pour le moment, j'ai une table de hash avec pour chaque paire une
clé/valeur, que je complète avec les données statistiques. Je suis
obligé d'initialiser ma table pour le premier tour de mon script et
ensuite de dupliquer les clés/valeurs pour créer une liste que je vais
interroger aléatoirement. Un gag de plus est que les clés ne sont pas
uniques, donc j'ai d'entrée une table de tables de hash....

Est-ce que vous auriez une idée d'une approche plus globale qui me
permettrait d'éviter la duplication ? J'ai essayé de dupliquer en
interne à partir du hash, mais je me retrouve avec des référence de
hash qui sont incompatibles avec le pragma use strict !

J'espère avoir été clair... N'hésitez pas à me demander d'éclaircir !

Merci d'avance,

PK

-- 
      |\      _,,,---,,_           Patrice KARATCHENTZEFF
ZZZzz /,`.-'`'    -.  ;-;;,_   mailto:patrice.karatchentzeff at gmail.com
     |,4-  ) )-,_. ,\ (  `'-'
    '---''(_/--'  `-'\_)


Plus d'informations sur la liste de diffusion Perl