π
<-

MasterMind

MasterMind

Postby Samos » 14 May 2013, 15:32

Salut

Je crée ce sujet afin de partager et de proposer des améliorations pour les codes sources des masterminds au premier tour du TI-concours 2013

Sujet: http://www.ti-concours.com/tz/t1/

Voilà mon programme:
Code: Select all
:StoreGDB 0:Func:AxesOff:FnOff :PlotsOff :GridOff
:0→Xmin:0→Ymin
:1→∆X:1→∆Y
:4→D
:{π→L4
:DelVar GDelVar F10→E
:While 1
:   ClrDraw
:   ClrHome
:   30→X
:   Text(3,26,"MASTERMIND
:   Horizontal 62
:   Horizontal 0
:   Horizontal 50
:   Horizontal 40
:   Vertical 0
:   Vertical 94
:   Text(14,2,"TI CONCOURS 2013           SAMOS
:   Text(25,34,"1 PLAYER
:   Text(34,32,"2 PLAYERS
:   Text(43,40,"HELP
:   Text(52,32,"SETTINGS
:   Repeat Ans=105 or Ans=45
:      Line(1,X,93,X,0
:      Line(1,X+8,93,X+8,0
:      X+9((X≠30 and Ans=25)-(Ans=34 and X≠3→X
:      Horizontal X
:      Horizontal X+8
:      getKey
:   End
:   ClrDraw
:   DelVar CDelVar L1DelVar L2DelVar L3DelVar BDelVar YIf Ans=45
:      Goto 4
:   If X=3
:      Goto 5
:   X=30→C
:   If X≠12
:      Goto 2
:   Disp "AFTER CHOOSING","DIGITS TYPE","[ENTER] TO VALID","OR [ANNUL] TO
:   Pause "REMOVE.
:   Disp "+ MEANS A DIGIT","IS OKAY","- MEANS A DIGIT
:   Pause "IS IN A WRONG SPOT
:   Disp "PRESS [ANNUL] IN","THE MENU TO QUIT","CHECK HISTORY TO","SEE PREVIOUS
:   Pause "GAMES
:End
:Lbl 5
:53→Y
:Text(0,33,"OPTIONS
:Text(9,3,"CODE LENGTH:
:Text(18,3,"TRIALS:
:Text(27,3,"PLAYER:
:Text(36,3,"HISTORY
:Repeat B=105
:   getKey→B
:   Line(0,Y,0,Y-6,0
:   Y+9((B=25 and Y≠53)-(B=34 and Y≠26→Y
:   Line(0,Y,0,Y-6
:   If Y=53
:      D-(B=24 and D≠2)+(B=26 and D≠9→D
:   If Y=44
:      E-(B=24 and E≠2)+(B=26 and 10≠E→E
:   If Y=35 and (B=24 or B=26
:      not(F→F
:   Text(18,48,"<",E,">   
:   Text(9,48,"<",D,">
:   Text(27,48,"<",F,">
:End
:If Y=26 and π-L4(1
:Then
:   ClrDraw
:   Text(0,0,"HISTORY:
:   Text(9,0,"PLAYER:   WON:   TRIALS:
:   For(X,1,dim(L4
:      "NO
:      If iPart(10fPart(L4(X
:         "YES
:      Text(9+6X,2,10fPart(10L4(X
:      Text(9+6X,30,Ans
:      Text(9+6X,50,iPart(L4(X
:   End
:   Pause
:   ClrDraw
:End
:End
:Lbl 2
:{π→L1
:If C
:Then
:   For(X,1,D
:      While sum(Ans=L1
:         randInt(0,9
:      End
:      Ans→L1(X
:   End
:Else
:   Text(9,2,"PLAYER",not(F)," :TYPE THE CODE
:   Text(16,2,"NUMBERS MUST BE DIFFERENTS
:   prgmMIND03IP
:   L2→L1
:End
:1
:For(X,1,D-1
:   For(B,X+1,D
:      Ans(L1(X)≠L1(B
:   End
:End
:If not(Ans
:   Goto 2
:D→dim(L1
:ClrDraw
:Horizontal 62
:Horizontal 0
:Vertical 0
:Vertical 94
:Repeat Y=E or prod(L1=L2
:   Text(1+6Y,2,Y,":
:   prgmMIND03IP
:   "
:   For(X,1,D
:      If sum(L2=L1(X
:      Then
:         If L1(X)=L2(X
:         Then
:            "+"+Ans
:         Else
:            Ans+"-
:         End
:      End
:   End
:   Text(1+6Y,12+4D,Ans
:   Y+1→Y
:End
:Pause
:1+G(G≠8→G
:Y+F.01+.1prod(L1=L2→L4(G
:" LOST
:If prod(L1=L2
:   " WON
:ClrDraw
:Text(0,1,"PLAYER",F,Ans
:Text(7,1,"THE CODE IS:
:For(X,1,D
:   Text(15,4X,L1(X
:End
:Pause
:End
:Lbl 4
:RecallGDB 0
:DelVar GDelVar FDelVar L4DelVar DDelVar EDelVar GDB0DelVar X"



MIND03IP:
Code: Select all
:{102,92,93,94,82,83,84,72,73,74→L3
:Repeat Ans-45
:   For(X,1,D
:      Line(6+4X,60-6Y,6+4X,56-Y6
:      Repeat Ans
:         getKey→B
:         sum(L3=Ans
:      End
:      While B-L3(Ans
:         Ans+1
:      End
:      Ans-1→L2(X
:      Text(1+6Y,6+4X,Ans
:   End
:   While Ans-105 and Ans-45
:      getKey
:   End
:End
User avatar
Samos
Niveau 13: CU (Calculateur Universel)
Niveau 13: CU (Calculateur Universel)
Level up: 57.2%
 
Posts: 50
Joined: 28 Jul 2012, 20:26
Gender: Not specified
Calculator(s):
MyCalcs profile
Class: C'est compliqué.

Re: MasterMind

Postby Bisam » 14 May 2013, 16:54

Tu aurais pu factoriser un peu en créant un sous programme pour exécuter
Code: Select all
:ClrDraw
:Horizontal 62
:Horizontal 0
:Vertical 0
:Vertical 94
qui est écrit à 2 endroits de ton code.
User avatar
BisamAdmin
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Level up: 69.6%
 
Posts: 5670
Joined: 11 Mar 2008, 00:00
Location: Lyon
Gender: Male
Calculator(s):
MyCalcs profile

Re: MasterMind

Postby Samos » 14 May 2013, 18:36

Ton idée de factorisation est bonne mais le règlement de concours empêche cela d'être rentable.
Le programme principal doit être nommé MIND03 et chaque sous doit commencer de la même manière avec 1 à 2 caractères en plus.
Nous arrivons à un total de 31 octets pour le sous-programme et 32 octets pour le programme principal contenant 2 fois le nom du sous-programme, alors que le programme principal qui contient ces fonctions écrites deux fois ne fait que 46 octets.
Cependant, je retiens ton idée pour la mise en ligne du programme, rien ne m'empêchera de le nommer avec une seule lettre.
Merci beaucoup pour ton aide!
User avatar
Samos
Niveau 13: CU (Calculateur Universel)
Niveau 13: CU (Calculateur Universel)
Level up: 57.2%
 
Posts: 50
Joined: 28 Jul 2012, 20:26
Gender: Not specified
Calculator(s):
MyCalcs profile
Class: C'est compliqué.

Re: MasterMind

Postby Persalteas » 14 May 2013, 20:57

J'aurais bien aimé débugguer le mien et le poster, mais...

C'est incroyable. Absolument rien ne marche. C'est à croire que le programme se modifie tout seul, j'ai des erreurs partout, que je n'avais pas quand je le testais... Et d'autres problèmes plus saugrenus, comme le texte qui s'affiche pas au même endroit sur 84+SE et sur les autres modèles O_o

Bref, j'ai un sacré travail de recodage à faire, et comme je me souviens plus de la structure de mon code ça va être pas facile...

Le scrolling, qui était quand même la meilleure feature de mon mastermind, provoque une erreur à tout les coups alors que ça marchait très bien avant (je m'en serais aperçu !) , et impossible de comprendre pourquoi...
Bref, on verra...
User avatar
PersalteasMembre UPECS
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 6.2%
 
Posts: 2337
Images: 113
Joined: 04 Feb 2010, 00:00
Location: Evry (France)
Gender: Male
Calculator(s):
MyCalcs profile
Class: PhD candidate, Bioinformatics

Re: MasterMind

Postby Bisam » 14 May 2013, 21:16

Poste quand même : plus il y a de paires d'yeux sur ton code, plus il y a de chances de trouver le problème...
User avatar
BisamAdmin
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Level up: 69.6%
 
Posts: 5670
Joined: 11 Mar 2008, 00:00
Location: Lyon
Gender: Male
Calculator(s):
MyCalcs profile

Re: MasterMind

Postby Persalteas » 14 May 2013, 21:31

ça y est, quelques problèmes réglés...

Mais j'avais déjà fait ces corrections - à mon avis, je suis juste un imbécile, et j'ai envoyé au concours une version erronée - qui d'ailleurs ne pesait pas 4000 tout rond mais moins alors que je m'étais plu à m'en vanter.

Bref, j'ai perdu 10 points précieux pour une idiotie, je suis un crétin.
Je finis de fouiller mon programme, et je vous le poste...

EDIT: J'ai pas trouvé pourquoi le texte s'affiche toujours un pixel plus bas sur 84+SE que sur les autres modèles

EDIT2:

Donc voilà, j'en reste là pour ce soir.


Le code: (c'est du TokenIDE, désolé pour la syntaxe...)
Ne vous fiez plus à l'image annotée que j'ai fournie dans le pack, le code est un peu différent maintenant.
Code: Select all
Full
FnOff :AxesOff
0->Xmin:0->Ymin
1->DeltaX:1->DeltaY
DelVar L
9->dim(|LMS
If not(|LMS(4:{4,0,0,1,99,99,99,99,0->|LMS
Lbl M
ClrDraw
1->C
RecallPic 9
{0,36,39,44,39,50,57->L1
Repeat max(K={45,105
getKey->K
Text(L1(2C),L1(2C+1),"[
If K:Text(L1(2C),L1(2C+1)," 
C-(K=25)+(K=34->C
If not(C:3->C
If C=4:1->C
End
If C=3 or K=45:Goto Q
If C=2:Then
|LMS->L1
Horizontal 0
For(A,1,39
Line(0,A,94,A,0
Pt-On(0,A
Pt-On(94,A
End
Horizontal 40
Text(26,6,"-Answers :
Text(33,6,"-D[i]ff[i]culty :
Text(40,6,"-Nbr players:
Text(47,6,"-Several same
Text(54,10,"colors :
1->C
{26,33,40,54->L2
Repeat K=45 or K=105
L2(C->A
getKey->K
Text(26,56,sub("PlacedD[i]g[i]ts",6L1(9)+1,6
Text(33,56,sub("       Easy    Normal       Med[i]um  Hardcore",8L1(1)-16,8
Text(40,56,1+L1(2
Text(54,56,sub("D[i]sabledEnabled ",8L1(3)+1,8
Text(A,51,"<
Text(A,90,">
If K:Then
Text(A,51,"   
Text(A,90,"   
C+(K=34)-(K=25->C
If not(C:4->C
If C=5:1->C
If C=2:Then
L1(1)+(K=26)-(K=24->L1(1
If 3>L1(1:6->L1(1
If 6<L1(1:3->L1(1
End
If max(K={24,26:Then
If C=1:not(L1(9->L1(9
If C=3:not(L1(2->L1(2
If C=4:not(L1(3->L1(3
If max(C={2,1,4
Text(33(C=2)+54(C=4)+26(C=1),56,"                               
End
End
End
2->C
L1->|LMS
End
If C=2:Goto M
|LMS(1->N
N+3->P
If |LMS(2
Then
Horiz
RecallPic 9
Line(10,7,84,6
For(A,8,55
Line(11,A,83,A,0
Pt-On(10,A
Pt-On(84,A
End
Line(10,56,84,56
Text(6,18,"ENTER ",N," DIGITS
Text(14,18,"BETWEEN 1 AND ",P
Lbl A
DelVar BDelVar L2
Input ">",Str1
If N!=length(Str1:1->B
N->dim(L2
If not(B:Then
For(A,1,N
expr(sub(Str1,A,1->L2(A
If Ans>P:1->B
If 3=sum(seq(L2(A)=L2(K),K,1,N))+not(|LMS(3:2->B
End
End
If B:Disp "ERROR
If B=2:Disp "Same d[i]g[i]ts.
If B:Goto A
Full
Else
If |LMS(3:Then
randInt(1,P,N->L2
Else
Repeat min(DeltaList(L2
randInt(1,P,N->L1
L1->L2
SortA(L2
End
L1->L2
End:End
1+12N->N
{N-1,61,1,61,0,60,0,1,1,0,N,0,N,1,N,60,N+1,1,N+1,59,77,53,94,53,76,46,94,46,76,60,76,0,76,0,94,0,94,0,94,60,94,60,76,60
ClrDraw
For(A,1,44,4
Line(Ans(A),Ans(A+1),Ans(A+2),Ans(A+3
End
{59,54,52,47
For(A,1,4
Pt-On(77,Ans(A
Pt-On(93,Ans(A
End
{1,1,1,60,N-1,1,N-1,60
For(A,1,8,2
Pt-On(Ans(A),Ans(A+1
End
Line(3,16,N-3,16
Line(3,59,N-3,59
(N-1)/12->N
For(A,0,N-1
{7A+2,4,7A+7,4,7A+7,11,7A+2,11,7A+2,4
For(B,1,7,2
Line(Ans(B),Ans(B+1),Ans(B+2),Ans(B+3
End
End
Text(47,78,"BEST
Text(54,78,"= ",|LMS(2+|LMS(1
{1,N->dim([J]
[J]->[H]
Fill(1,L1
DelVar VDelVar C1->B
{0->L4
Lbl I
L1(V+1->R:C+1->C
2+dim(L4->dim(L4
For(A,0,N-1
Text(52,7A+3,L1(A+1
End
Repeat max(K={105,45
Text(52,7V+3,R
getKey->K
R+(K=25)-(K=34->R
If max(K={92,93,94,82,83,84,72,73,74:Then
(K=92)+2(K=93)+3(K=94)+4(K=82)+5(K=83)+6(K=84)+7(K=72)+8(K=73)+9(K=74
If Ans<=P:Ans->R
End
If not(R:P->R
If R>P:1->R
If B xor max(K={24,26
Then
Pt-Change(7V+4,2
Pt-Change(7V+5,1
Pt-Change(7V+6,2
Pt-Change(7V+4,13
Pt-Change(7V+5,14
Pt-Change(7V+6,13
End
DelVar BDelVar Y
If max(K={24,26,105:Then
R->L1(V+1
V+(K=26)-(K=24->V
If V=N:0->V
If V<0:N-1->V
L1(V+1->R
1-(K=105->B
End
If 6<Cmax(K={21,31:Then
L-(K=21 and L)+(K=31 and L<C-7->L
Lbl B
1+dim(L4->K
For(A,1,6
For(B,1,N
Text(7A-3,7B-4,[J](A+L,B
End
If |LMS(9:Then
Text(7A-3,7N+5(N>3),"plotsquare",L4(K-2(A+L)),"plotcross",L4(1+K-2(A+L
Else
For(B,1,N
Pt-Off(7N+3B+4,63-7A,2
Pt-Off(7N+3B+4,63-7A
Pt-On(7N+3B+4,63-7A,[H](A+L,B
End
End
End
If Y=9:Goto C
End
End
If K=45:Goto M
N->dim(L1
List>matr(L1,[I]
augment([I],[J]^^T)^^T->[J]
Text(3,82,C
Text(10,82,15-C,"   
N->dim(L3
For(A,1,N
1->K
If L1(A)=L2(A
Then
2->K
Else
If max(seq(L2(B)=L1(A),B,1,N
3->K
End
K->L3(A
End
List>matr(L3,[G]
augment([G],[H]^^T)^^T->[H]
For(A,1,N
If 2=L3(A:1+L4(2C->L4(2C
If 3=L3(A:1+L4(2C+1->L4(2C+1
End
If C<6:Then
For(A,0,N-1
Text(46-7C,7A+3,L1(A+1
End
If |LMS(9
Then
Text(46-7C,7N+5(N>3),"plotsquare",L4(2C),"plotcross",L4(2C+1
Else
For(A,1,N
Pt-On(7N+3A+4,14+7C,L3(A
End
End
Else
9->Y
Goto B
Lbl C
End
DelVar B
If N=sum(L2=L1 or C=15:Then
Horizontal 10
For(A,11,51
Line(0,A,94,A,0
End
Horizontal 52
If C=15:Then
Text(12,10,"THE CODE WAS :
Text(37,30,"YOU LOSE !
Else
Text(12,10,"CODE BROKEN ! :
|LMS(2+|LMS(1
If C<Ans
C->|LMS(2+|LMS(1
End
For(A,1,N
Text(12,60+5A,L2(A
End
Text(21,25,"- Tr[i]es :  ",C
Text(28,25,"- Best :  ",|LMS(2+|LMS(1
Text(45,10,"1: Replay
Text(45,60,"2: Qu[i]t
Repeat max(B={92,93,45
getKey->B
End
End
If not(B:Goto I
If B=92:Goto M
Lbl Q
ZStandard:AxesOn
DelVar [J]DelVar [I]DelVar [H]DelVar [G]DelVar L1DelVar L2DelVar L4DelVar L3DelVar Str1DelVar ADelVar BDelVar CDelVar KDelVar NDelVar PDelVar RDelVar LDelVar YDelVar V
Output(1,1,"


Problèmes à résoudre:
  • En mode "réponses non placées", le scrolling est impossible (erreur obtenue dès qu'on dépasse 6 coups)
  • Sur OS MathPrint, tous les textes affichent un espace en dessous, mais uniquement dans mon programme...

Si ça peut vous aider à comprendre le code:
- [H] est la matrice contenant la notation
- [J] est la matrice contenant les coups
- L1=[I] est la liste/matrice comprenant le dernier coup
- K=1+dim(L4 dans la boucle principale, mais est vite remplacé par un getKey
- L correspond à la variable du scrolling: elle permet d'incrémenter la position des 6 lignes de la matrice qui seront affichées. Si L=0, c'est que le dernier coup est affiché en haut, L=1, l'avant dernier coup, etc... Ce qui permet de faire le scrolling pour avoir l'historique des coups passé 6 coups.

Screen de l'inexplicable problème de l'OS MathPrint sur 84+SE:

différences MathPrint.png


EDIT3: Passer en mode CLASSIC permet empêche ce bug... Mais relou, 2 octets de plus, quoi, et une encore une version différente...
EDIT 4: Ah, non, pas toujours. Mystère.
EDIT 5: Problème résolu, c'est un bug de la commande Text selon TI|BD. Les seuls moyens de l'empêcher sont DispTable, l'éditeur de liste, et G-T. Donc j'ai rajouté un :G-T:Full au début du code, c'est très lourd et très moche mais ça résout le problème.
Encore un bug à rajouter à ma liste de bugs connus.
You do not have the required permissions to view the files attached to this post.
User avatar
PersalteasMembre UPECS
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 6.2%
 
Posts: 2337
Images: 113
Joined: 04 Feb 2010, 00:00
Location: Evry (France)
Gender: Male
Calculator(s):
MyCalcs profile
Class: PhD candidate, Bioinformatics

Re: MasterMind

Postby Persalteas » 16 May 2013, 12:27

Bon, je double poste, mais au bout d'un certain nombre d'EDITs, ça devient nécessaire :P

J'ai enfin résolu les bugs de ce programme, il fonctionne :bj:

Show/Hide spoilerAfficher/Masquer le spoiler


Cependant... il ne respecte plus les règles du TI-Concours maintenant qu'il pèse 4023 octets si on compte la Pic et la liste... Je tiens à respecter cette contrainte, d'autant plus que c'est pas très dur (remplacer des e minuscules par des exponentielles, déjà EDIT: Ah non, une exponentielle, c'est aussi 2 octets...).

je poste le code définitif.. bientôt
User avatar
PersalteasMembre UPECS
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 6.2%
 
Posts: 2337
Images: 113
Joined: 04 Feb 2010, 00:00
Location: Evry (France)
Gender: Male
Calculator(s):
MyCalcs profile
Class: PhD candidate, Bioinformatics

Re: MasterMind

Postby Bisam » 16 May 2013, 19:51

Tu peux gagner quelque octets en remplaçant
Code: Select all
If max(C={2,1,4
Text(33(C=2)+54(C=4)+26(C=1),56,"

par
Code: Select all
If max(C={2,1,4
Text(26+7(C=2)+28(C=4),56,"
puisque de toute façon après le "If", C vaut forcément 1, 2 ou 4.

De même, tu en gagnes encore en remplaçant :
Code: Select all
If max(K={92,93,94,82,83,84,72,73,74:Then
(K=92)+2(K=93)+3(K=94)+4(K=82)+5(K=83)+6(K=84)+7(K=72)+8(K=73)+9(K=74
par
Code: Select all
If max(K={92,93,94,82,83,84,72,73,74:Then
2-(K=92)+(K=94)+2(K=82)+3(K=83)+4(K=84)+5(K=72)+6(K=73)+7(K=74


Tu peux aussi en gagner d'une autre façon en remplaçant :
Code: Select all
For(A,0,N-1
{7A+2,4,7A+7,4,7A+7,11,7A+2,11,7A+2,4
For(B,1,7,2
Line(Ans(B),Ans(B+1),Ans(B+2),Ans(B+3
End
End

par
Code: Select all
For(A,7,7N,7
{A-5,4,A,4,A,11,A-5,11,A-5,4
For(B,1,7,2
Line(Ans(B),Ans(B+1),Ans(B+2),Ans(B+3
End
End


Allez, encore une, pour la route :
Code: Select all
For(B,1,N
Pt-Off(7N+3B+4,63-7A,2
Pt-Off(7N+3B+4,63-7A
Pt-On(7N+3B+4,63-7A,[H](A+L,B
End
devient
Code: Select all
7N+4
For(B,1,N
Ans+3
Pt-Off(Ans,63-7A,2
Pt-Off(Ans,63-7A
Pt-On(Ans,63-7A,[H](A+L,B
End
Je n'ai pas vérifié si ça n'interférait pas avec l'utilisation d'un autre "Ans" ailleurs...

Je compte (à la main) 31 octets de gagné au total... Maintenant, ça passe.
User avatar
BisamAdmin
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Level up: 69.6%
 
Posts: 5670
Joined: 11 Mar 2008, 00:00
Location: Lyon
Gender: Male
Calculator(s):
MyCalcs profile

Re: MasterMind

Postby Persalteas » 17 May 2013, 10:59

Merci Bisam, tout ceci marche parfaitement :bj: !

Nouveau code, définitif a priori (version 83+/84+):
Show/Hide spoilerAfficher/Masquer le spoiler
Code: Select all
:G-T:Full
:FnOff :AxesOff
:0→Xmin:0→Ymin
:1→ΔX:1→ΔY
:DelVar L9→dim(∟MS
:If not(∟MS(4:{4,0,0,1,99,99,99,99,0→∟MS
:Lbl M
:ClrDraw
:1→C
:RecallPic 9
:{0,36,39,44,39,50,57→L1
:Repeat max(K={45,105
:getKey→K
:Text(L1(2C),L1(2C+1),"[
:If K:Text(L1(2C),L1(2C+1)," 
:C-(K=25)+(K=34→C
:If not(C:3→C
:If C=4:1→C
:End
:If C=3 or K=45:Goto Q
:If C=2:Then
:∟MS→L1
:Horizontal 0
:For(A,1,39
:Line(0,A,94,A,0
:Pt-On(0,A
:Pt-On(94,A
:End
:Horizontal 40
:Text(26,6,"-Answers :
:Text(33,6,"-Difficulty :
:Text(40,6,"-Nbr players:
:Text(47,6,"-Several same
:Text(54,10,"colors :
:1→C
:{26,33,40,54→L2
:Repeat K=45 or K=105
:L2(C→A
:getKey→K
:Text(26,56,sub("PlacedDigits",6L1(9)+1,6
:Text(33,56,sub("       Easy    Normal       Medium  Hardcore",8L1(1)-16,8
:Text(40,56,1+L1(2
:Text(54,56,sub("DisabledEnabled ",8L1(3)+1,8
:Text(A,51,"<
:Text(A,90,">
:If K:Then
:Text(A,51,"   
:Text(A,90,"   
:C+(K=34)-(K=25→C
:If not(C:4→C
:If C=5:1→C
:If C=2:Then
:L1(1)+(K=26)-(K=24→L1(1
:If 3>L1(1:6→L1(1
:If 6<L1(1:3→L1(1
:End
:If max(K={24,26:Then
:If C=1:not(L1(9→L1(9
:If C=3:not(L1(2→L1(2
:If C=4:not(L1(3→L1(3
:If max(C={2,1,4
:Text(26+7(C=2)+28(C=4),56,"                               
:End
:End
:End
:2→C
:L1→∟MS
:End
:If C=2:Goto M
:∟MS(1→N
:N+3→P
:If ∟MS(2
:Then
:Split
:RecallPic 9
:Line(10,7,84,6
:For(A,8,55
:Line(11,A,83,A,0
:Pt-On(10,A
:Pt-On(84,A
:End
:Line(10,56,84,56
:Text(6,18,"ENTER ",N," DIGITS
:Text(14,18,"BETWEEN 1 AND ",P
:Lbl A
:DelVar BDelVar L2
:Input ">",Str1
:If N≠length(Str1:1→B
:N→dim(L2
:If not(B:Then
:For(A,1,N
:expr(sub(Str1,A,1→L2(A
:If Ans>P:1→B
:If 3=sum(seq(L2(A)=L2(K),K,1,N))+not(∟MS(3:2→B
:End
:End
:If B:Disp "ERROR
:If B=2:Disp "Same digits.
:If B:Goto A
:Full
:Else
:If ∟MS(3:Then
:randInt(1,P,N→L2
:Else
:Repeat min(DeltaList(L2
:randInt(1,P,N→L1
:L1→L2
:SortA L2
:End
:L1→L2
:End:End
:1+12N→N
:{N-1,61,1,61,0,60,0,1,1,0,N,0,N,1,N,60,N+1,1,N+1,59,77,53,94,53,76,46,94,46,76,60,76,0,76,0,94,0,94,0,94,60,94,60,76,60
:ClrDraw
:For(A,1,44,4
:Line(Ans(A),Ans(A+1),Ans(A+2),Ans(A+3
:End
:{59,54,52,47
:For(A,1,4
:Pt-On(77,Ans(A
:Pt-On(93,Ans(A
:End
:{1,1,1,60,N-1,1,N-1,60
:For(A,1,8,2
:Pt-On(Ans(A),Ans(A+1
:End
:Line(3,16,N-3,16
:Line(3,59,N-3,59
:(N-1)/12→N
:For(A,7,7N,7
:{A-5,4,A,4,A,11,A-5,11,A-5,4
:For(B,1,7,2
:Line(Ans(B),Ans(B+1),Ans(B+2),Ans(B+3
:End
:End
:Text(47,78,"BEST
:Text(54,78,"= ",∟MS(2+∟MS(1
:{1,N→dim([J]
:[J]→[H]
:Fill(1,L1
:DelVar VDelVar C1→B
:{0→L4
:Lbl I
:L1(V+1→R:C+1→C
:2+dim(L4→dim(L4
:For(A,0,N-1
:Text(52,7A+3,L1(A+1
:End
:Repeat max(K={105,45
:Text(52,7V+3,R
:getKey→K
:R+(K=25)-(K=34→R
:If max(K={92,93,94,82,83,84,72,73,74:Then
:2-(K=92)+(K=94)+2(K=82)+3(K=83)+4(K=84)+5(K=72)+6(K=73)+7(K=74
:If Ans≤P:Ans→R
:End
:If not(R:P→R
:If R>P:1→R
:If B xor max(K={24,26
:Then
:7V
:Pt-Change(Ans+4,2
:Pt-Change(Ans+5,1
:Pt-Change(Ans+6,2
:Pt-Change(Ans+4,13
:Pt-Change(Ans+5,14
:Pt-Change(Ans+6,13
:End
:DelVar BDelVar YIf max(K={24,26,105:Then
:R→L1(V+1
:V+(K=26)-(K=24→V
:If V=N:0→V
:If V<0:N-1→V
:L1(V+1→R
:1-(K=105→B
:End
:If 6<Cmax(K={21,31:Then
:L-(K=21 and L)+(K=31 and L<C-7→L
:Lbl B
:For(A,1,6
:For(K,1,N
:Text(7A-3,7K-4,[J](A+L,K
:End
:If ∟MS(9:Then
:Y=9
:dim(L4)-1-2(A+L)+3Ans+not(Ans
:Text(7A-3,7N+5(N>3),"□",L4(Ans-1),"┼",L4(Ans
:Else
:7N+4
:For(K,1,N
:Ans+3
:Pt-Off(Ans,63-7A,2
:Pt-Off(Ans,63-7A
:Pt-On(Ans,63-7A,[H](A+L,K
:End
:End
:End
:If Y=9:Goto C
:End
:End
:If K=45:Goto M
:DelVar LN→dim(L1
:List►matr(L1,[I]
:augment([I],[J]T)T→[J]
:Text(3,82,C
:Text(10,82,15-C,"   
:N→dim(L3
:For(A,1,N
:1→K
:If L1(A)=L2(A
:Then
:2→K
:Else
:If max(seq(L2(B)=L1(A),B,1,N
:3→K
:End
:K→L3(A
:End
:List►matr(L3,[G]
:augment([G],[H]T)T→[H]
:For(A,1,N
:If 2=L3(A:1+L4(2C→L4(2C
:If 3=L3(A:1+L4(2C+1→L4(2C+1
:End
:If C<7:Then
:For(A,0,N-1
:Text(46-7C,7A+3,L1(A+1
:End
:If ∟MS(9
:Then
:Text(46-7C,7N+5(N>3),"□",L4(2C),"┼",L4(2C+1
:Else
:For(A,1,N
:Pt-On(7N+3A+4,14+7C,L3(A
:End
:End
:Else
:9→Y
:Goto B
:Lbl C
:End
:DelVar BIf N=sum(L2=L1 or C=15:Then
:Horizontal 10
:For(A,11,51
:Line(0,A,94,A,0
:End
:Horizontal 52
:If C=15:Then
:Text(12,10,"THE CODE WAS :
:Text(37,30,"YOU LOSE !
:Else
:Text(12,10,"CODE BROKEN ! :
:If C<∟MS(2+∟MS(1
:C→∟MS(2+∟MS(1
:End
:For(A,1,N
:Text(12,60+5A,L2(A
:End
:Text(21,25,"- Tries :  ",C
:Text(28,25,"- Best :  ",∟MS(2+∟MS(1
:Text(45,10,"1: Replay
:Text(45,60,"2: Quit
:Repeat max(B={92,93,45
:getKey→B
:End
:End
:If not(B:Goto I
:If B=92:Goto M
:Lbl Q
:ZStandard:AxesOn
:DelVar [J]DelVar [I]DelVar [H]DelVar [G]DelVar L1DelVar L2DelVar L4DelVar L3DelVar Str1DelVar ADelVar BDelVar CDelVar KDelVar NDelVar PDelVar RDelVar LDelVar YDelVar VOutput(1,1,"
SOURCE.png


Version 82 stats/83:
Show/Hide spoilerAfficher/Masquer le spoiler
Code: Select all
:FnOff :AxesOff
:0→Xmin:0→Ymin
:1→ΔX:1→ΔY
:DelVar L9→dim(∟MS
:If not(∟MS(4:{4,0,0,1,99,99,99,99,0→∟MS
:Lbl M
:ClrDraw
:1→C
:RecallPic 9
:{0,36,39,44,39,50,57→L1
:Repeat max(K={45,105
:getKey→K
:Text(L1(2C),L1(2C+1),"[
:If K:Text(L1(2C),L1(2C+1)," 
:C-(K=25)+(K=34→C
:If not(C:3→C
:If C=4:1→C
:End
:If C=3 or K=45:Goto Q
:If C=2:Then
:∟MS→L1
:Horizontal 0
:For(A,1,39
:Line(0,A,94,A,0
:Pt-On(0,A
:Pt-On(94,A
:End
:Horizontal 40
:Text(26,6,"-A[n][s]|w[e][r][s] :
:Text(33,6,"-Di|F|Fi[|c]|u1[t][yhat] :
:Text(40,6,"-N[|b][r] [p]1[|a][yhat][e][r][s]:
:Text(47,6,"-S[e]|v[e][r][|a]1 [s][|a]M[e]
:Text(54,10,"[c]O1O[r][s] :
:1→C
:{26,33,40,54→L2
:Repeat K=45 or K=105
:L2(C→A
:getKey→K
:Text(26,56,sub("P1[|a][|c][e][|d]DiGi[t][s]",6L1(9)+1,6
:Text(33,56,sub("       E[|a][s][yhat]    NO[r]M[|a]1       M[e][|d]i|uM  H[|a][r][|d][|c]O[|r][e]",8L1(1)-16,8
:Text(40,56,1+L1(2
:Text(54,56,sub("Di[s][|a][|b]1[e][|d]E[n][|a][|b]1[e][|d] ",8L1(3)+1,8
:Text(A,51,"<
:Text(A,90,">
:If K:Then
:Text(A,51,"   
:Text(A,90,"   
:C+(K=34)-(K=25→C
:If not(C:4→C
:If C=5:1→C
:If C=2:Then
:L1(1)+(K=26)-(K=24→L1(1
:If 3>L1(1:6→L1(1
:If 6<L1(1:3→L1(1
:End
:If max(K={24,26:Then
:If C=1:not(L1(9→L1(9
:If C=3:not(L1(2→L1(2
:If C=4:not(L1(3→L1(3
:If max(C={2,1,4
:Text(26+7(C=2)+28(C=4),56,"                               
:End
:End
:End
:2→C
:L1→∟MS
:End
:If C=2:Goto M
:∟MS(1→N
:N+3→P
:If ∟MS(2
:Then
:Split
:RecallPic 9
:Line(10,7,84,6
:For(A,8,55
:Line(11,A,83,A,0
:Pt-On(10,A
:Pt-On(84,A
:End
:Line(10,56,84,56
:Text(6,18,"ENTER ",N," DIGITS
:Text(14,18,"BETWEEN 1 AND ",P
:Lbl A
:DelVar BDelVar L2
:Input ">",Str1
:If N≠length(Str1:1→B
:N→dim(L2
:If not(B:Then
:For(A,1,N
:expr(sub(Str1,A,1→L2(A
:If Ans>P:1→B
:If 3=sum(seq(L2(A)=L2(K),K,1,N))+not(∟MS(3:2→B
:End
:End
:If B:Disp "ERROR
:If B=2:Disp "SAME [|d]iGi[t][s]!
:If B:Goto A
:Full
:Else
:If ∟MS(3:Then
:randInt(1,P,N→L2
:Else
:Repeat min(DeltaList(L2
:randInt(1,P,N→L1
:L1→L2
:SortA L2
:End
:L1→L2
:End:End
:1+12N→N
:{N-1,61,1,61,0,60,0,1,1,0,N,0,N,1,N,60,N+1,1,N+1,59,77,53,94,53,76,46,94,46,76,60,76,0,76,0,94,0,94,0,94,60,94,60,76,60
:ClrDraw
:For(A,1,44,4
:Line(Ans(A),Ans(A+1),Ans(A+2),Ans(A+3
:End
:{59,54,52,47
:For(A,1,4
:Pt-On(77,Ans(A
:Pt-On(93,Ans(A
:End
:{1,1,1,60,N-1,1,N-1,60
:For(A,1,8,2
:Pt-On(Ans(A),Ans(A+1
:End
:Line(3,16,N-3,16
:Line(3,59,N-3,59
:(N-1)/12→N
:For(A,7,7N,7
:{A-5,4,A,4,A,11,A-5,11,A-5,4
:For(B,1,7,2
:Line(Ans(B),Ans(B+1),Ans(B+2),Ans(B+3
:End
:End
:Text(47,78,"BEST
:Text(54,78,"= ",∟MS(2+∟MS(1
:{1,N→dim([J]
:[J]→[H]
:Fill(1,L1
:DelVar VDelVar C1→B
:{0→L4
:Lbl I
:L1(V+1→R:C+1→C
:2+dim(L4→dim(L4
:For(A,0,N-1
:Text(52,7A+3,L1(A+1
:End
:Repeat max(K={105,45
:Text(52,7V+3,R
:getKey→K
:R+(K=25)-(K=34→R
:If max(K={92,93,94,82,83,84,72,73,74:Then
:2-(K=92)+(K=94)+2(K=82)+3(K=83)+4(K=84)+5(K=72)+6(K=73)+7(K=74
:If Ans≤P:Ans→R
:End
:If not(R:P→R
:If R>P:1→R
:If B xor max(K={24,26
:Then
:7V
:Pt-Change(Ans+4,2
:Pt-Change(Ans+5,1
:Pt-Change(Ans+6,2
:Pt-Change(Ans+4,13
:Pt-Change(Ans+5,14
:Pt-Change(Ans+6,13
:End
:DelVar BDelVar YIf max(K={24,26,105:Then
:R→L1(V+1
:V+(K=26)-(K=24→V
:If V=N:0→V
:If V<0:N-1→V
:L1(V+1→R
:1-(K=105→B
:End
:If 6<Cmax(K={21,31:Then
:L-(K=21 and L)+(K=31 and L<C-7→L
:Lbl B
:For(A,1,6
:For(K,1,N
:Text(7A-3,7K-4,[J](A+L,K
:End
:If ∟MS(9:Then
:Y=9
:dim(L4)-1-2(A+L)+3Ans+not(Ans
:Text(7A-3,7N+5(N>3),"□",L4(Ans-1),"┼",L4(Ans
:Else
:7N+4
:For(K,1,N
:Ans+3
:Pt-Off(Ans,63-7A,2
:Pt-Off(Ans,63-7A
:Pt-On(Ans,63-7A,[H](A+L,K
:End
:End
:End
:If Y=9:Goto C
:End
:End
:If K=45:Goto M
:DelVar LN→dim(L1
:List►matr(L1,[I]
:augment([I],[J]T)T→[J]
:Text(3,82,C
:Text(10,82,15-C,"   
:N→dim(L3
:For(A,1,N
:1→K
:If L1(A)=L2(A
:Then
:2→K
:Else
:If max(seq(L2(B)=L1(A),B,1,N
:3→K
:End
:K→L3(A
:End
:List►matr(L3,[G]
:augment([G],[H]T)T→[H]
:For(A,1,N
:If 2=L3(A:1+L4(2C→L4(2C
:If 3=L3(A:1+L4(2C+1→L4(2C+1
:End
:If C<7:Then
:For(A,0,N-1
:Text(46-7C,7A+3,L1(A+1
:End
:If ∟MS(9
:Then
:Text(46-7C,7N+5(N>3),"□",L4(2C),"┼",L4(2C+1
:Else
:For(A,1,N
:Pt-On(7N+3A+4,14+7C,L3(A
:End
:End
:Else
:9→Y
:Goto B
:Lbl C
:End
:DelVar BIf N=sum(L2=L1 or C=15:Then
:Horizontal 10
:For(A,11,51
:Line(0,A,94,A,0
:End
:Horizontal 52
:If C=15:Then
:Text(12,10,"THE CODE WAS :
:Text(37,30,"YOU LOSE !
:Else
:Text(12,10,"CODE BROKEN ! :
:If C<∟MS(2+∟MS(1
:C→∟MS(2+∟MS(1
:End
:For(A,1,N
:Text(12,60+5A,L2(A
:End
:Text(21,25,"- T[r]i[e][s] :  ",C
:Text(28,25,"- B[e][s][t] :  ",∟MS(2+∟MS(1
:Text(45,10,"1: R[e][p]1[|a][yhat]
:Text(45,60,"2: Q|ui[t]
:Repeat max(B={92,93,45
:getKey→B
:End
:End
:If not(B:Goto I
:If B=92:Goto M
:Lbl Q
:ZStandard:AxesOn
:DelVar [J]DelVar [I]DelVar [H]DelVar [G]DelVar L1DelVar L2DelVar L4DelVar L3DelVar Str1DelVar ADelVar BDelVar CDelVar KDelVar NDelVar PDelVar RDelVar LDelVar YDelVar VOutput(1,1,"
SOURCE.png


You do not have the required permissions to view the files attached to this post.
User avatar
PersalteasMembre UPECS
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 6.2%
 
Posts: 2337
Images: 113
Joined: 04 Feb 2010, 00:00
Location: Evry (France)
Gender: Male
Calculator(s):
MyCalcs profile
Class: PhD candidate, Bioinformatics

Re: MasterMind

Postby Bisam » 18 May 2013, 15:13

Et le nombre d'octets gagnés ?
User avatar
BisamAdmin
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Level up: 69.6%
 
Posts: 5670
Joined: 11 Mar 2008, 00:00
Location: Lyon
Gender: Male
Calculator(s):
MyCalcs profile

Next

Return to TI-Basic

Who is online

Users browsing this forum: No registered users and 5 guests

-
Search
-
Social TI-Planet
-
Featured topics
Ndless for CX 4.5.5 / CX II 6.2.0
Comparaisons des meilleurs prix pour acheter sa calculatrice !
"1 calculatrice pour tous", le programme solidaire de Texas Instruments. Reçois gratuitement et sans aucune obligation d'achat, 5 calculatrices couleur programmables en Python à donner aux élèves les plus nécessiteux de ton lycée. Tu peux recevoir au choix 5 TI-82 Advanced Edition Python ou bien 5 TI-83 Premium CE Edition Python.
Enseignant(e), reçois gratuitement 1 exemplaire de test de la TI-82 Advanced Edition Python. À demander d'ici le 31 décembre 2024.
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
12345
-
Donations / Premium
For more contests, prizes, reviews, helping us pay the server and domains...
Donate
Discover the the advantages of a donor account !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partner and ad
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
2208 utilisateurs:
>2173 invités
>28 membres
>7 robots
Record simultané (sur 6 mois):
43991 utilisateurs (le 10/09/2025)
-
Other interesting websites
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)