dprtl a écrit :... Surtout pour celui de C.Ret
...
Je trouve aussi que cette première bouture est pas mal !
J'ose à peine proposer cette nouvelle version qui ne me rapportera pas autant de Bogo :
En effet, elle nécessite trois sous-programmes et fait donc environ 281 octets, elle met pas moins de 10 min à trouver la matrice possible pour d=5.
Seul avantage, elle est paramètrique, c'est-àdire qu'elle prend en argument la dimension de la matrice, c'est à dire le nombre de colonnes.
En théorie, elle doit être capable de trouver une solution pour d=11 colonnes. Mais, il ne faut pas s'attendre à voir s'imprimer le résultat avant quelques mois !
Code : Tout sélectionner
PROGRAMME PRINCIPAL:
« -> d
« { d } 1 CON // initie compteurs de nombres à 1: [ 1 1 1 ... 1 ]
DUP 0 * // inite seconde ligne matrice à zéro: [ 0 0 0 ... 0 ]
1 d FOR i
i i CPUT // construitmatrice initiale [ 1 2 3 ... d ]
NEXT
PR1 // Affiche matrice initiale qui est aussi la première ligne
DO
IF DUP2 == // Si compteur = seconde ligne alors c'est une solution
THEN
OVER PR1 // Affiche seconde ligne
END
d // Init i à d
DO
DUP2 GET
RSET // décompte nombre
1 +
IF DUP d >
THEN // dépassement
DROP 1 CPUT
LAST - // décrémente vers position à droite
SWAP DROP // réarrange pile
ELSE
CPUT
-1
END
UNTIL DUP 1 < END // jusqu'à position <1
UNTIL NOT END // jusqu'à zéro
»
»
où
CPUT:
« 9 FS CMPTR // incrémente compteur nombre
PUT » // change élément seconde ligne
RSET:
« 9 FC CMPTR »
CMPTR:
« 4 ROLL OVER DUP2 GET // en fonction de l'indice
1 IF 9 FC? THEN NEG END // incrémente (Flag 0 set) ou décrémente (Flag 0 clear)
+ PUT // compteur
4 ROLLD // réarrange pile
»
281 octets
10 min.
21 Bogo.
P.S.: L'HP-28S est apparue en 1986, elle fonctionne à
2 MHz.
Edith: Après vérification je confirme l'information de Gilles59, c'est uniquemetn 1 MHz - Je n'ai pas changer le cristal de mon HP !
Même s'il est lent, ce programme à l'avantage de donner quelques exemples de matrices possibles :
d=1:
aucune
d=2:
aucune
d=3:
aucune
d=4:
[ 1 2 3 4
2 3 2 1 ]
[ 1 2 3 4
3 1 3 1 ]
d=5:
[ 1 2 3 4 5
3 2 3 1 1 ]
d=6:
aucune
d=7:
[ 1 2 3 4 5 6 7
4 3 2 2 1 1 1 ]