Bien vu C.RET !
C'est l'algorithme que j'ai choisi sur 501->603P J'ai même un peu amélioré pour descendre à 28 pas :
Code : Tout sélectionner
*** P0
SAC
LBL0
RAN# * 4 = X↔M07 Min06
IND MR06 IND X↔M07 IND Min06
MRF - MR00 + MR01 = / MR02 * MR03 =
X=F HLT GOTO0
Mettre 3479175 dans MRF, et les 4 autres nombres dans les mémoires 0 à 3
Lancer P0
La solution est alors dans MR00 MR01 MR02 et MR03.
A noter que contrairement à la 15C "historique" avec le programme de C.RET ci dessus la solution est trouvée en quelques secondes au mieux et quelques dizaines de secondes au pire. C'est même quasi instantané sur la 603P. Dû à la vitesse de la machine ou à l'algorithme un peu différent ?
Edit : je ne comprends pas le programme de 15c et la multiplication par 3, alors qu'il me semble qu'il faut multiplier par 4 ? ;D En toute logique , la solution devrait être trouvée en moyenne après 12 boucles, j'ai du mal à comprendre que ce soit si lent sur la 15c... Si l'adressage indirect se fait par l'entier le plus proche (sur 602 c'est sur la partie entière) , alors ca pose pb pour les mémoire 0 et 3 non ? le programme ne perd-il pas du temps à trop swapper les mémoire 1 et 2 au détriment des 0 et 3 ?
Re edit : je crois que j'ai compris. Tu utilises la mémoire 3 comme pivot, alors que j'échange aléatoirement le contenu de deux mémoires entre 0,1,2 et 3 à chaque boucle (enfin presque ...) . Ca fait un bon exercice pour comprendre si ca change quelque chose ou pas en nombre moyen de boucles pour trouver la solution.