bien le bonsoir,
je ne me souviens plus de l'algo pour permuter 2 variables sans utiliser une 3ème variable. si si, je sais que c'est possible.
et je n'arrive pas à remettre la main dessus.
merci bien.
Version imprimable
bien le bonsoir,
je ne me souviens plus de l'algo pour permuter 2 variables sans utiliser une 3ème variable. si si, je sais que c'est possible.
et je n'arrive pas à remettre la main dessus.
merci bien.
Il y a une variante avec des XORs, et une avec des opérations arithmétiques (attention aux overflows avec la seconde).
Permutation A/B :Ou :Code:
1
2
3 A <- A Xor B B <- B Xor A A <- A Xor B
Code:
1
2
3 A <- A - B B <- A + B A <- B - A
Je ne sais pas si c'est que tu cherche, mais comme cela, ca a l'air de fonctionner:
exemple:Code:
1
2
3
4
5 var a, var b a=a+b b=a-b a=a-b
et c'est permuté !Code:
1
2
3
4
5
6a = x et b = y => a = x + y b = a - b = x + y - y = x => donc b = x a = x + y - x => a = y
<edit>
oups, le temps que je brouillone et que j'ecrive, je me suis fait devancé par Mac Lak... :cry:
</edit>
++
Pouic
Mon papy, c'est Flash et mon papa, c'est Lucky Luke... :mrgreen: :mrgreen: :mrgreen:Citation:
Envoyé par Pouic
Problème récurrent
Var A, B : réel ; Début Lire(A,B) ; Si (A>=B) Alors A<-A-B; B<-A+B; A<-B-A; Sinon B<-B+A; A<-B-A; B<-B-A; Fsi Écrire(A,B); Fin.
Ca fait gagner de la mémoire, mais l'utilisation d'opération arithmétiques est BIEN PLUS lente.
Donc quel est réellement l'intérêt de le faire ?
Et d'autre part, (et d'autant plus que les ordres de grandeur de A et B sont très différents) il va y avoir des erreurs de troncature lors des opérations qui feront qu'on ne retrouvera pas exactement les mêmes nombres une fois la "permutation" effectuée...