Forum

Catégorie : Programmes
Forum : Les programmes des internautes
Vues : 837
Réponses : 8
Type : discussion
Etat : réponses autorisées

Entraînement cérébrale 1.0

Toto le 12/10/2011 à 16:26
Alors, voici un programme de mémoire de 688 octets... Et à un niveau très élevé.

Code

Prgm: MEMOIRE
:entaléat(1,100)->A
:entaléat(1,100)->B
:entaléat(1,100)->C
:entaléat(1,100)->D
:entaléat(1,100)->E
:entaléat(100,1000)->F
:entaléat(100,1000)->G
:entaléat(1000000000,9999999999)->H
:entaléat(1000000000,9999999999)->I
:entaléat(1,5)->J
:entaléat(1,5)->K
:entaléat(1000,10000)->L
:entaléat(1000,10000)->M
:Disp A,B,C,D,E, "ENREGISTRE BIEN"
:Pause :EffEcr
:Disp "Le",J,"ET LE",K
:Input N
:Input 0
:If J=1
:A->J
:If J=2
:B->J
:If J=3
:C->J
:If J=4
:D->J
:If J=5
:E->J
:If K=1
:A->K
:If K=2
:B->K
:If K=3
:C->K
:If K=4
:D->K
:If K=5
:E->K
:If N=J et 0=K
:Then
:Disp "CONTINU"
:Else
:Stop
:End
:EffEcr
:Disp F,G,"ENREGISTRE..."
:Pause :EffEcr
:Disp "RECOPIE","CA",H
:Input R
:If R[différent de]H
:Stop
:Disp "ET CA",I
:Input S
:If S[différent de]I
:Stop
:EffEcr
:Disp "LES 2 NBS","APPARUENT","ENTRE 100","ET 1000"
:Pause
:Input P
:Input Q
:If P[différent de]F ou Q[différent de]G
:Stop
:EffEcr
:Disp L,M,""
:Pause "ENCORE 1 FOIS...
:EffEcr
:Disp "LES 5 PREMIERS","NOMBRES"
:Input V
:Input W
:Input X
:Input Y
:Input Z
:If V[différent de]A ou W[différent de]B ou X[différent de]C ou Y[différent de]D ou Z[différent de]E
:Stop
:EffEcr
:Disp "LES 4 NBS>100"
:Input A
:Input B
:Input C
:Input D
:If A=F et B=G et C=L et D=M
:Then
:Disp "BRAVO"
:Else
:Disp "DOMMAGE"
:End


Alors, si vous voulez simplifier, faite ceci:

Code

:entaléat(1,10)*10->A

Même chose pour B,C,D,E,F,G,M,L


Voilà. Si vous voyez comment simplifier...
sandro le 12/10/2011 à 18:32
ça à l'air pas mal pour ceux qu aiment ce genre de jeux, par contre, on peu grandement optimiser :
Code
Prgm: MEMOIRE
:entaléat(1,e2->A
:entaléat(1,e2->B
:entaléat(1,e2->C
:entaléat(1,e2->D
:entaléat(1,e2->E
:entaléat(e2,e3->F
:entaléat(e2,e3->G
:entaléat(e9,e10-1->H
:entaléat(e9,e10-1->I
:entaléat(1,5->J
:entaléat(1,5->K
:entaléat(e3,e4->L
:entaléat(e3,e4->M
:Disp A,B,C,D,E, "ENREGISTRE BIEN
:Pause :EffEcr
:Disp "Le",J,"ET LE",K
:Input N
:Input 0
:If J=1
:A->J
:If J=2
:B->J
:If J=3
:C->J
:If J=4
:D->J
:If J=5
:E->J
:If K=1
:A->K
:If K=2
:B->K
:If K=3
:C->K
:If K=4
:D->K
:If K=5
:E->K
:If N=J et 0=K
:Then
:Disp "CONTINU
:Else
:Stop
:End
:EffEcr
:Disp F,G,"ENREGISTRE...
:Pause :EffEcr
:Disp "RECOPIE","CA",H
:Input R
:If R-H
:Stop
:Disp "ET CA",I
:Input S
:If S-I
:Stop
:EffEcr
:Disp "LES 2 NBS","APPARUENT","ENTRE 100","ET 1000
:Pause
:Input P
:Input Q
:If P-F ou Q-G
:Stop
:EffEcr
:Disp L,M,""
:Pause "ENCORE 1 FOIS...
:EffEcr
:Disp "LES 5 PREMIERS","NOMBRES
:Input V
:Input W
:Input X
:Input Y
:Input Z
:If V-A ou W-B ou X-C ou Y-D ou Z-E
:Stop
:EffEcr
:Disp "LES 4 NBS>100
:Input A
:Input B
:Input C
:Input D
:If A=F et B=G et C=L et D=M
:Then
:Disp "BRAVO
:Else
:Disp "DOMMAGE


Sandro
Toto1 le 19/10/2011 à 14:24
Maintenant que je suis enregistré...

Merci pour les suggestions, sandro
Sangohan38 le 19/10/2011 à 17:46
Je pense qu'on peux encore optimiser en utilisant une liste au lieu de variables.

A l'inverse, au lieu de mettre des e2 à chaque fois, on stock la valeur dans une variable puis on l'utilise ce qui fait un gain de 10 octets. Idem pour e3 et e10.

Et tu utilises des variables qui ensuite ne sont plus utilisées alors réutilises-les. Par exemple, tu utilise P et Q pour rentrer les 2 nombres entre 100 et 1000 mais tu peut aussi les utiliser pour rentrer les 5 premiers nombres au lieu de V,W,X,Y et Z.

Sangohan38
linkakro le 24/10/2011 à 20:41
Quitte à envisager des listes, on peut même écrire
entAléat(1,e2,5)
au lieu d'écrire 5 fois entAléat(1,e2).
Et idem pour chaque catégorie avec 2 comme dernier argument.
Voire même "chaîne(".

Il y a du pour et du contre aux listes. Cela réduit souvent le poids mais complique le code.
Par exemple on peut utiliser des listes pour des tests mais il faut d'abord stocker les données dans une liste, ce qui n'est pas forcément rentable.

Et une dernière chose :
Code
:If N=J et O=K
:Then
:Disp "CONTINU
:Else
:Stop
:End

A REMPLACER PAR

:If N-J ou O-K
:Stop
:Disp "CONTINU


ps: les entaléat à trois arguments, je ne les ai pas trouvé tout seul. Quelqu'un me l'a montré mais j'ai oublié qui.
Persalteas le 25/10/2011 à 19:34
Waa tiens je connnaissais pas le entaléat( avec trois arguments ! merci pour l'astuce !
sandro le 25/10/2011 à 21:19
C'est sur que c'est pratique : surtout en statistiques, ça évite de faire un programme quand on a besoin de 500 nombres aléatoires (la même chose marche aussi pour BinAléa(.

Sandro
Que ti reg le 20/11/2011 à 12:16
Comment faites vous le "different de"? est ce une touche?
The K le 20/11/2011 à 14:18
C'est dans le menu "test", que tu obtient en faisant les touches [seconde] + [math]. La, c'est le deuxième symbole.