Bonjour à tous,
je vous expliques le problème en quelques ligne : j'ai une suite de vecteur et je souhaite conserver en mémoire leur .argsort() (ie la permutation permettant de les ordonner), pour ensuite tracer la courbe de l'évolution de ces permutations.
Pour le moment j'ai codé une petite fonction donnant à chaque permutation un entier. Le problème c'est que comme le nombre de permutations est très grand cela donne une courbe assez peu lisible. Or en pratique seul un petit nombre de permutations apparaissent, mon objectif est donc d'écrire une fonction telle que, si n est le nombre de permutation "en mémoire", et v la nouvelle permutation on est
f(v) = n si v n'est pas en mémoire, sa valeur sinon.
Un exemple car j'ai l'impression de ne pas être clair :
f([1 2 3]) = 0 (premier appel, rien en mémoire)
f([1 3 2]) = 1 (v n'est pas en mémoire, -> un nouveau identifiant)
f([1 2 3]) = 0 (v est déjà en mémoire, on donne sa valeur)
f([2 1 3]) = 2 (v n'est pas en mémoire, nouvel identifiant)
...
J'ai commencé d'imaginer de coder ça avec un dictionnaire des permutations en mémoire (test pour savoir si c'est dedans, sinon ajout au dictionnaire), mais ça me semble un peu compliqué, et je ne sais même pas comment le coder...
Merci pour le coup de main :-)
Partager