Bonjour à tous(tes),
Quelqu'un aurait un algo de permutation en pseudo-code.
Pour une chaine de caractères a$ de longueur n avec f=n!
Sans doublons si possible
J'ai la première ligne
Pour x=1 to f
Gros merci aux savants.
Bonjour à tous(tes),
Quelqu'un aurait un algo de permutation en pseudo-code.
Pour une chaine de caractères a$ de longueur n avec f=n!
Sans doublons si possible
J'ai la première ligne
Pour x=1 to f
Gros merci aux savants.
Savoir pour comprendre et vice versa.
Bonjour
Il ne faut pas mettre la réalisation avant la conception.J'ai la première ligne
Pour x=1 to f
De plus, ta question est sibylline.
Dans quel contexte es-tu ? Et que cherches-tu à faire ?
Normalement, on permute de la façon suivante, que ce soit des nombres, des lettres, ou des cageots de fraises :
En Perl, on utiliserait une syntaxe comme celle-ci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 temp <- a a <- b b <- temp
Code : Sélectionner tout - Visualiser dans une fenêtre à part ($a,$b)=($b,$a);
Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.
Je cherche à avoir toutes les combinaisons d'une chaine de caractères
Je sais que par exemple pour 6 caractères je dois avoir 720 combinaisons (6!)
J'en conclus donc que je dois faire 720 traitements
D'où une boucle de 720 pas
C'est pas ça ?
Savoir pour comprendre et vice versa.
En un mot, tu cherches les anagrammes.
Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.
On peut l'appeler comme ça, sauf qu'il n'y aura pas que des lettres.
Je cherche une explication claire des opérations à effectuer.
Pour parvenir au but.
EDIT:C'est bon pour l'instant, je fouille le forum avec "anagramme" et je trouve pas mal de choses.
Savoir pour comprendre et vice versa.
Le but n'a jamais été exprimé.
Si c'est pour éviter les doublons car tu considères 2 ensembles comme identiques à une permutation près, le conseil est de trier et comparer. Ne va pas t'amuser à lister les anagrammes.
Si le but est de comparer à un dictionnaire, le conseil est parfois de partir du dictionnaire et d'écrire une fonction de comparaison, entre ta réglette de départ et ton entrée de dictionnaire, qui détermine s'ils sont anagrammes l'un de l'autre.
Si tu veux lister les possibilités, tu as déjà vu un concours de beauté.... 4ème dauphine .... 3ème dauphine .... 2ème dauphine .... 1ère dauphine .... Miss France ! Tu dois faire pareil.
Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.
Puisque tu veux connaître le but final, le voici:
Je veux, à partir d'une expression du genre: "x=a+(b*c) (en restant conscient que le nombre de caractères sera forcément limité par n!)
Obtenir les expressions équivalentes de toutes les variables de l'expression.
Pour ce faire je compte utiliser la force brute, à savoir:
Donner des valeurs numériques arbitraires aux variables.
Calculer x
Faire la combinatoire des variables, opérateurs et parenthèses
Eliminer les incohérents (+=)a(b...)
Calculer, comparer, extraire.
Le tout pour le fun, of course.
Savoir pour comprendre et vice versa.
Bonjour,
Au moins, c'est plus clair, et cela peut de simplifier dans la mesure où:
1) la chaîne commence obligatoirement par 'x=';
2) les parenthèses sont inutiles dans l'exemple donné, puisque
'x=a+b+c' a un sens, de même que 'x=a+b*c' , 'x=a*b+c' , 'x=a*b*c' ... si tu te limites aux deux opérations mentionnées.
3) les symboles des nombres alternent nécessairement avec ceux des signes: 'x=u#v#w' .
Les contraintes grammaticales limitent ainsi drastiquement le nombre de possibilités: 3! * 22 = 24 .
Cependant, en relisant un détail de ton dernier message
je crains qu'il n'arrive de sérieuses complications.
Je ne veux pas limiter à l'expression donnée en exemple, mais limiter aux quatre opérateurs.
Je veux voir combien de caractères seront prohibitifs pour le temps de calculs.
Ce qui impliquera d'optimiser le code (ce qui est la moitié du but).
Je crois me souvenir que tu m'a donné il y a un moment un code en Windev, que la version d'évaluation n'a pas voulu lancer; et qui malgré mes efforts m'est resté obscur (Windev, c'est spécial...)
Savoir pour comprendre et vice versa.
Tu as déjà (je m'en souviens) amené un sujet apparenté, mais je ne t'ai sûrement pas suggéré un code écrit en Windev (que je ne pratique pas, et ne connais que de nom) ...
L'introduction des parenthèses va s'accompagner d'une liste considérable d'incompatibilités. Y a-t-eu un peu réfléchi ?
Ne vaudrait-il pas mieux commencer par des choses simples, par exemple des lettres et les quatre signes d'opérations ?
Je recopie :Si je comprend bien, à partir de x=a+(b*c)Je veux, à partir d'une expression du genre: "x=a+(b*c)
Obtenir les expressions équivalentes de toutes les variables de l'expression.
Les solutions que tu veux sont :
a=x-(b*c)
b=(x-a))/c
c=(x-a)/b
C'est à dire isoler à chaque fois une des variables, et l'écrire en fonction des 3 autres.
Accessoirement, on peut lister d'autres réponses : a = x-(c*b) par exemple, mais je pense que celle-ci ne t'intéresse pas, car doublon avec a=x-(b*c)
j'imagine que ton besoin, c'est ça. En tout cas, ton besoin était celui là il y a un an ( cf : https://www.developpez.net/forums/d1...nnees/jouable/ ) , et à l'époque, tu n'avais pas obtenu tout à fait la réponse voulue.
N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.
@: wiwaxia: En traitant les parenthèses à part ça paraît faisable. De toutes façons, des parenthèses il ne peut pas y en avoir beaucoup parce qu'avec plus de 10 caractères ça doit devenir ingérable au niveau temps.
@: tbc92: C'est bien ce que j'espère.
Savoir pour comprendre et vice versa.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager