Autorisation : Membre
Nb de messages : 16
Inscrit le : Sam 04 Fév 2012, 23:16
Posté le : Sam 14 Avr 2012, 20:16
Petit jeu de calcul mental conçu en basic sur une TI 82 stats(fr) (marche bien sûr pour TI 82 et 83 regular) avec 30 niveaux de difficulté croissante, 3 vitesses d'exécutions différentes selon le niveau atteint et un système de sauvegarde du nom des vainqueurs.
Voici l'adresse de téléchargement : http://www.ti-bank.fr/index.php?mod=archives&ac=voir&id=10000256
Et voici le code :
Code
:If Θmin≠int(Θmin
:Then
: 0→Θmin
: "→Str0
:End
:ClrHome
:Lbl Z
:Menu(" CALCUL MENTAL "," JOUER",A," VAINQUEURS",B," QUITTER",C
:Lbl A
:1→H
:DelVar Q0→L
:DelVar Z0→N
:ClrHome
:Output(1,1,"TON PSEUDO STPL =)
:Disp "","
:Input Str1
:ClrHome
:Output(3,1,"OK "+Str1
:Output(4,1,"C'EST QUAND TU VEUX !
:Pause
:Repeat N=30
: DelVar Q0→H
: ClrHome
: (N>9)randInt(11,19→J
: (N>19)randInt(11,20→M
: (N<10)randInt(2,9→B
: (N<20)randInt(2,9→C
: (B+J)*(C+M→D
: 100int(D/100→L
: 10int(D/10→F
: If F>99:F-L→F
: D-10int(D/10→G
: 74((L=900)+(F=90)+(G=9))+73((L=800)+(F=80)+(G=8))+72((L=700)+(F=70)+(G=7))+84((L=600)+(F=60)+(G=6))+83((L=500)+(F=50)+(G=5))+82((L=400)+(F=40)+(G=4))+94((L=300)+(F=30)+(G=3))+93((L=200)+(F=20)+(G=2))+92((L=100)+(F=10)+(G=1))+102((G=0)+((L>F)(F=0→H
: Output(1,1,"LEVEL
: Output(1,8,N+1
: Output(7,1,"IL TE RESTE s
: If B+J>9
: Output(4,1,B+J
: If B+J<10
: Output(4,2,B
: Output(4,3,"*
: Output(4,4,C+M
: Output(4,6,"=
: For(I,1,4
: Disp "
: End
: For(I,200-50(N>4)-30(N>14),1,‾1
: Output(7,13,int(I/40
: getKey→K
: K+Q→Q
: End
: ClrHome
: If Q=H
: Then
: 1+N→N
: For(I,1,80
: Output(4,4,"LEVEL UP !
: End
: ClrHome
: If N=5
: Then
: Output(4,3,"PLUS VITE !
: For(I,1,300
: End
: End
: If N=10
: Then
: Disp "BIEN, ON VA","POUVOIR PASSER","AUX CHOSES ","SERIEUSES =}
: For(I,1,500
: End
: End
: If N=15
: Then
: Output(1,1,"AUGMENTER
: Output(2,1,"VITESSE ?
: For(I,1,800)
: End
: ClrHome
: Output(3,1,"TU PENSAIS
: Output(4,1,"VRAIMENT AVOIR"
: Output(5,1,"LE CHOIX x1
: Output(5,12,"D
: For(I,1,500
: End
: End
: If N=20
: Then
: Disp "IMPRESSIONANT !","MAIS SERAS TU","CAPABLE D'ALLER","JUSQU'AU BOUT ?
: For(I,1,500
: End
: End
: ClrHome
: Else
: Goto Θ
: End
:End
:Lbl Θ
:Output(3,1,Str1
:If N=30
:Then
: Output(2,1,"FELICITATION
: Output(4,1,"TU AS GAGNE !
: Output(5,1,"TON NOM ENTRERA
: Output(6,1,"DANS LA LEGENDE!
: Pause :ClrHome
: Output(2,1,"ENFIN DANS LA
: Output(3,1,"RUBRIQUE DEDIEE
: Output(4,1,"AU VAINQUEURS
: Output(5,1,"POUR L'INSTANT..
: "("+Str1+")"+Str0→Str0
: 1+Θmin→Θmin
:Else
: Output(2,1,"DESOLE
: Output(4,1,"TU AS PERDU...
: Output(5,1,"TON SCORE EST DE
: Output(6,8,N
:End
:Pause
:ClrHome
:Goto Z
:Lbl B
:If Θmin>0
:Then
: length(Str0→L
: Θmin→I
: For(I,1,Θmin
: inString(Str0,"("→N
: inString(Str0,")"→M
: sub(Str0,N+1,M-1-N→Str8
: Disp Str8
: If I/7=int(I/7:Pause
: sub(Str0,M+1,L-M)+"("+Str8+")→Str0
: End
:Else
: Output(4,7,"VIDE
:End
:Pause
:ClrHome
:Goto Z
:Lbl C
:ClrHome
:Disp "BY MOMOTHEFIRST"," ≤)
Bien évidemment, vos remarques seront les bienvenues
Désolé pour l'apparence de mon code sur le topic; le plus simple serait de télécharger le fichier au format .83 et de l'ouvrir avec TI-editor (ou autre éditeur de programme TI 83) car j'ai l'impression que les subtilités de mon code n'ont pas été appréciées lorsque je l'ai posté ...https://tout82.pages-perso.free.fr/forum/images/smileys/goutte.gif
Autorisation : Membre
Nb de messages : 1366
Inscrit le : Ven 25 Mar 2011, 22:58
Posté le : Sam 14 Avr 2012, 20:49
désolé, je n'arrive pas à ouvrir ton lien (mon navigateur depuis quelques mois ne m'ouvre plus les pages de TI-Bank). Donc si tu veut que je puisse t'aider (et faire proffiter de ton programme au plus grand monde), ce serait bien que tu remplace les carractères spéciaux qui ne passent pas.
Sandro
---------------------- mort à l'inutile, place à la mémoire libre et aux programmes
---------------------- ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)
Autorisation : Membre
Nb de messages : 16
Inscrit le : Sam 04 Fév 2012, 23:16
Posté le : Dim 15 Avr 2012, 17:08
Citer : tapenad
mais si la question est par exemple 2342,232+6754,356 ( de tête environ 9096,588) il suffit de taper (aïe) le même calcul non?
Eh bien justement ce jeu a été conçu de façon à ce que le résultat soit écrit en toute lettre (ou chiffre dans ce cas ), à la touche près.
Cependant, il possède un défaut et pas des moindres... il ne prend pas en compte l'ordre des touches pressées. Ainsi 81 sera égal à 18, de même pour 36 et 63, etc...
De plus, mon jeu n'affiche pas le nombre qu'entre l'utilisateur pour des soucis de rapidité d’exécution. En effet, si vous prêtez attention à la boucle principale du code qui permet de récupérer la valeur des touches pressées par l'utilisateur(celle où il y a le "codeTouche"), vous remarquerez qu'elle est très brève car elle a pour but de limiter à mon souhait le temps dont dispose l'utilisateur pour répondre (je sais, je suis un peu sadique ) et ajouter trop d'instructions à cette boucle pourrait compromettre cette aspect, du moins avec l’algorithme que j'ai mis en place. Mais bien sûr, si vous avez des propositions à me faire pour l'améliorer sur ces derniers points ou d'autres que je n'aurais pas pris en compte n'hésitez pas, j'ai posté mon code pour ça.
Autorisation : Membre
Nb de messages : 16
Inscrit le : Sam 04 Fév 2012, 23:16
Posté le : Lun 16 Avr 2012, 12:17
Citer : persalteas
pour écrire 36 il faut déjà avoir trouvé la réponse 63.
C'est vrai; et de toute façon la probabilité que le joueur trouve le résultat avec les chiffres inversés sans avoir calculé mentalement (en gros au pif) est vraiment très faible.
Citer : persalteas
Et merci pour la traduction !
De rien , mais je viens de me rendre compte que la traduction des fonctions Anglaises/Françaises est imposée par le forum, donc je tiens à présenter mes excuses auprès des modérateurs pour cette erreur.
Citer : persalteas
C'est plutôt une bonne idée. Moi je trouve ça sympa, et on ne peut pas tricher
Tu l'as essayé ? Si c'est le cas pourrais tu me donner ton meilleur score, histoire que je sache si il est possible de gagner car je n'ai pas pu faire mieux que 21
Autorisation : Membre
Nb de messages : 16
Inscrit le : Sam 04 Fév 2012, 23:16
Posté le : Lun 16 Avr 2012, 16:42
Merci Sangohan38 pour ce petit ajustement qui m'a échappé :
Citer : Sangohan38
Code
:100ent(D/100->L
: 10ent(D/10->F
Devient:
Code
100ent(.01D->L
10ent(.1D->F
Par contre, j'aimerais bien que tu détailles la seconde optimisation que tu as apporté à mon code car j'ai l'impression que tu as dû faire une "coquille" comme tu dis. Je ne te dis pas la surprise quand j'ai testé mon code avec ce changement et que je me suis rendu compte qu'il me serait impossible de dépasser le niveau 1...
Citer : Sangohan38
La traduction n'est pas du tout imposée, faut pas abuser.
C'est vrai, c'est juste qu'il y a un sujet "Traduction des fonctions Anglaises/Françaises" et du coup j'ai généralisé ça à tout le site
Citer : Sangohan38
Et sinon sa voudrait dire que je vais devoir réfléchir en français.. brrr l'horreur.
Bah...vu la qualité de ton français, c'est vrai que c'est une chance pour toi!
D'ailleurs je trouve ça un peu étonnant pour un modérateur...
Autorisation : Membre
Nb de messages : 3293
Inscrit le : Sam 31 Déc 2005, 19:48
Posté le : Lun 16 Avr 2012, 20:10
On prend vraiment n'importe qui comme modérateur tu sait. D'ailleurs je ne vois qu'une seule faute dans la phrase citée précédemment.
Mon code utilise les parties entières et décimales pour obtenir les facteurs de tes conditions (74, 73 etc) mais il buggait car j'avais oublié de préciser que L,G et G pouvais être nul.
(J'ai préféré cité pour pouvoir souligner les modifications que j'aie apportés au code)
Es-tu sûr qu'il est possible de retrouver absolument tous les facteurs de conditions du code précédent avec ta méthode ? L'as tu testée ? Je tiens quand même à te remercier pour l’intérêt que tu as montré jusqu'à lors pour mon modeste programme.
Citer : Sangohan38
On prend vraiment n'importe qui comme modérateur tu sait. D'ailleurs je ne vois qu'une seule faute dans la phrase citée précédemment.
Oui et je vois que tu l'as corrigé. Tu es allé jusqu'à corrigé la faute identique à la fin de ton poste mais quel dommage que tu aies oublié celle-ci :
Citer : Sangohan38
Bon sinon, on peut p'têtre simplifier tout sa:
Sans compter les fautes de conjugaison qui se sont glissées dans ton dernier poste...
Autorisation : Membre
Nb de messages : 3293
Inscrit le : Sam 31 Déc 2005, 19:48
Posté le : Mar 17 Avr 2012, 21:36
Oui, j'ai remarqué ça après ta remarque. Pour le dernier post, je n'en vois pas.
Et j'ai testé sur ma calculatrice et cela fonctionnait sans problèmes.
Sur mon code, j'ai fait des erreurs sur les parenthèses alors je recommence encore et cette fois j'espère ne pas me tromper:
Code
(L[différent de 0)(92-10iPart((L-100)/300)+3fPart((L-100)/300))+(F[différent de]0)(92-10iPart((F-10)/30)+3fPart((F-10)/30))+(G[différent de]0)(92-10iPart((G-1)/3)+3fPart((G-1)/3))+102(G=0)+((F<L)not(F
Sangohan38
PS: Et être modérateur, comme le titre l'indique c'est surtout tenir le forum propre des floods et du langage vraiment illisible.
Autorisation : Membre
Nb de messages : 16
Inscrit le : Sam 04 Fév 2012, 23:16
Posté le : Mar 17 Avr 2012, 23:51
Alors là oui, on peut dire que ton optimisation (113 octets de moins quand même !) est parfaite.
J'y ai ajouté la possibilité d'annuler le nombre saisi avec un petit K(différent de)45 (c'est d'ailleurs un peu idiot de ma part d'avoir oublié ce détail )
Je vais remettre le code en entier histoire de voir ce que ça donne :
Code
If ([thêta)min](différent de)ent([(thêta)min]
:Then
: 0->[(thêta)min]
: "->chaîne0
:End
:EffEcr
:Lbl Z
:Menu(" CALCUL MENTAL "," JOUER",A," VAINQUEURS",B," QUITTER",C
:Lbl A
:1->H
:EffVar Q0->L
:EffVar Z0->N
:EffEcr
:Output(1,1,"TON PSEUDO STPL =)
:Disp "","
:Input chaîne1
:EffEcr
:Output(3,1,"OK "+chaîne1
:Output(4,1,"C'EST QUAND TU VEUX !
:Pause
:Repeat N=30
: Effvar Q0->H
: EffEcr
: (N>9)entAléat(11,19->J
: (N>19)entAléat(11,20->M
: (N<10)entAléat(2,9->B
: (N<20)entAléat(2,9->C
: (B+J)*(C+M->D
: 100ent(0.01D->L
: 10ent(0.1D->F
: If F>99:F-L->F
: D-10ent(0.1D->G
: (L[différent de 0)(92-10ent((L-100)/300)+3partDéc((L-100)/300))+(F[différent de]0)(92-10ent((F-10)/30)+3partDéc((F-10)/30))+(G[différent de]0)(92-10ent((G-1)/3)+3partDéc((G-1)/3))+102(G=0)+((F<L)not(F
: Output(1,1,"LEVEL
: Output(1,8,N+1
: Output(7,1,"IL TE RESTE s
: If B+J>9
: Output(4,1,J
: If B+J<10
: Output(4,2,B
: Output(4,3,"*
: Output(4,4,C+M
: Output(4,6,"=
: For(I,1,4
: Disp "
: End
: For(I,200-50(N>4)-30(N>14),1,-1
: Output(7,13,ent(I/40
: codeTouche->K
: (K+Q)(K(différent de)45->Q \\
: End
: EffEcr
: If Q=H
: Then
: 1+N->N
: For(I,1,80
: Output(4,4,"LEVEL UP !
: End
: EffEcr
: If N=5
: Then
: Output(4,3,"PLUS VITE !
: For(I,1,300
: End
: End
: If N=10
: Then
: Disp "BIEN, ON VA","POUVOIR PASSER","AUX CHOSES ","SERIEUSES =}
: For(I,1,500
: End
: End
: If N=15
: Then
: Output(1,1,"AUGMENTER
: Output(2,1,"VITESSE ?
: For(I,1,800)
: End
: EffEcr
: Output(3,1,"TU PENSAIS
: Output(4,1,"VRAIMENT AVOIR"
: Output(5,1,"LE CHOIX x1
: Output(5,12,"D
: For(I,1,500
: End
: End
: If N=20
: Then
: Disp "IMPRESSIONANT !","MAIS SERAS TU","CAPABLE D'ALLER","JUSQU'AU BOUT ?
: For(I,1,500
: End
: End
: EffEcr
: Else
: Goto (thêta)
: End
:End
:Lbl (thêta)
:Output(3,1,chaîne1
:If N=30
:Then
: Output(2,1,"FELICITATION
: Output(4,1,"TU AS GAGNE !
: Output(5,1,"TON NOM ENTRERA
: Output(6,1,"DANS LA LEGENDE!
: Pause :EffEcr
: Output(2,1,"ENFIN DANS LA
: Output(3,1,"RUBRIQUE DEDIEE
: Output(4,1,"AU VAINQUEURS
: Output(5,1,"POUR L'INSTANT..
: "("+chaîne1+")"+chaîne0->chaîne0
: 1+[(thêta)min]->[(thêta)min]
:Else
: Output(2,1,"DESOLE
: Output(4,1,"TU AS PERDU...
: Output(5,1,"TON SCORE EST DE
: Output(6,8,N
:End
:Pause
:EffEcr
:Goto Z
:Lbl B
:If [(thêta)min]>0
:Then
: longueur(chaîne0->L
: [(thêta)min]->I
: For(I,1,[(thêta)min]
: carChaîne(chaîne0,"("->N
: carChaîne(chaîne0,")"->M
: sous-Chaîne(chaîne0,N+1,M-1-N->chaîne8
: Disp chaîne8
: If I/7=ent(I/7:Pause
: sous-Chaîne(chaîne0,M+1,L-M)+"("+chaîne8+")->chaîne0
: End
:Else
: Output(4,7,"VIDE
:End
:Pause
:EffEcr
:Goto Z
:Lbl C
:EffEcr
:Disp "BY MOMOTHEFIRST"," =)
Je rappelle quand même les principaux défauts de ce code:
- Ne gère pas l'ordre des touches pressées
- N'affiche pas les nombres lorsqu'ils sont saisis
Citer : Sangohan38
Pour le dernier post, je n'en vois pas.
[...]
PS: Et être modérateur, comme le titre l'indique c'est surtout tenir le forum propre des floods et du langage vraiment illisible.Texte cité
Tu as tout à fait raison mais je pense tout de même que ce n'est pas une raison pour égratigner de la sorte la belle langue de Molière : (extraits de ton antépénultième post)
Citer
On prend vraiment n'importe qui comme modérateur tu sait \\ Aïe !
[...]
L,G et G pouvais être nul. //
[...]
j'obtient l'expression suivante: // le coup de grâce...
PS : J’espère quand même que tu auras compris que je te taquine un peu. Mais bon essaie quand même de faire des efforts histoire que l'on puisse dire que ta maîtrise du français est aussi excellente que ton niveau en programmation ( en plus, d'après ce que j'ai vu de ton dernier post tu es sur la bonne voie)!
Autorisation : Membre
Nb de messages : 3293
Inscrit le : Sam 31 Déc 2005, 19:48
Posté le : Mer 18 Avr 2012, 1:02
A la vue de ce nouveau code, je vois d'autres optimisations possibles permettant notamment de virer des Then/Else/End qui ralentissent le programme.
Code
If ([thêta)min](différent de)ent([(thêta)min]
:Then
: 0->[(thêta)min]
: "->chaîne0
:End
:EffEcr
:Lbl Z
:Menu(" CALCUL MENTAL "," JOUER",A," VAINQUEURS",B," QUITTER",C
:Lbl A
:1->H
:EffVar Q Effvar L Effvar N EffVar Z
:Input "TON PSEUDO STPL:",chaîne1
:EffEcr
:Output(3,1,"OK "+chaîne1
:Output(4,1,"C'EST QUAND TU VEUX !
:Pause
:Repeat N=30
: Effvar Q Effvar H
: EffEcr
: (N>9)entAléat(11,19->J
: (N>19)entAléat(11,20->M
: (N[inférieur ou égal à]9)entAléat(2,9->B
: (N<20)entAléat(2,9->C
: (B+J)*(C+M->D
: E2ent(0.01D->L << C'est le E de la puissance de 10 >>
: 10ent(0.1D->F
: If F>99:F-L->F
: D-10ent(0.1D->G
: (L[différent de 0)(92-10ent((L-100)/300)+3partDéc((L-100)/300))+(F[différent de]0)(92-10ent((F-10)/30)+3partDéc((F-10)/30))+(G[différent de]0)(92-10ent((G-1)/3)+3partDéc((G-1)/3))+102(G=0)+((F<L)not(F
: Output(1,1,"LEVEL
: Output(1,8,N+1
: Output(7,1,"IL TE RESTE s
: If B+J>9
: Output(4,1,J
: If B+J[inférieur ou égal à]9
: Output(4,2,B
: Output(4,3,"*
: Output(4,4,C+M
: Output(4,6,"=
: For(I,1,4
: Disp "
: End
: For(I,200-50(N>4)-30(N>14),1,-1
: Output(7,13,ent(I/40
: codeTouche->K
: (K+Q)(K(différent de)45->Q
: End
: EffEcr
: If Q[différent de H
: Goto (théta)
: 1+N->N
: For(I,1,80
: Output(4,4,"LEVEL UP !
: End
: EffEcr
: For(I,1,800
: If N[différent de]15
: 800->I
: If N=15
: Disp "AUGMENTER","VITESSE ? << Le Disp est remplaçable par un Output si jamais il y a un disp avant dans le code >>
: End
: For(I,1,300(N=5)+500(1<partEnt(N/5
: If N=5
: Output(4,3,"PLUS VITE !
: If N=10
: Disp "BIEN, ON VA","POUVOIR PASSER","AUX CHOSES","SERIEUSES =}
: If N=15
: Disp "TU PENSAIS","VRAIMENT AVOIR,"LE CHOIX xD
: If N=20
: Disp "IMPRESSIONANT !","MAIS SERAS-TU","CAPABLE D'ALLER","JUSQU'AU BOUT ?
: End
:End
:EffEcr
:Lbl (thêta)
:Output(3,1,chaîne1
:Disp "","DESOLE","","TU AS PERDU...","TON SCORE EST DE"
:Output(6,8,N
:If N=30
:Then
: Disp "","","","FELICITATION","","TU AS GAGNE !","","TON NOM ENTRERA","DANS LA LEGENDE!
: Pause
: EffEcr
: Disp "","ENFIN DANS LA","RUBRIQUE DEDIEE","AU VAINQUEURS","POUR L'INSTANT... << Tu as fait une faute d'orthographe! >>
: "("+chaîne1+")"+chaîne0->chaîne0
: 1+[(thêta)min]->[(thêta)min]
:End
:Pause
:EffEcr
:Goto Z
:Lbl B
:If [(thêta)min]>0
:Then
: longueur(chaîne0->L
: [(thêta)min]->I
: For(I,1,[(thêta)min]
: carChaîne(chaîne0,"("->N
: carChaîne(chaîne0,")"->M
: sous-Chaîne(chaîne0,N+1,M-1-N->chaîne8
: Disp chaîne8
: If I/7=ent(I/7:Pause
: sous-Chaîne(chaîne0,M+1,L-M)+"("+chaîne8+")->chaîne0
: End
:Else
: Output(4,7,"VIDE
:End
:Pause
:EffEcr
:Goto Z
:Lbl C
:EffEcr
:Disp "BY MOMOTHEFIRST"," =)
Et ne t'en fais pas, je fais beaucoup d'efforts et j'accepte volontier la critique quand la personne est irréprochable (oui j'accepte mal qu'une personne faisant des erreurs d'orthographe qui changent la sonorité d'un mot me fasse des remarques).
Sangohan38
PS: Il n'y a pas que Molière qui à écrit un français littéraire, il y a toute la pléthore de poètes et écrivains français.
Autorisation : Membre
Nb de messages : 16
Inscrit le : Sam 04 Fév 2012, 23:16
Posté le : Jeu 19 Avr 2012, 2:03
Petit aparté littéraire :
Citer : Sangohan38
ENFIN DANS LA","RUBRIQUE DEDIEE","AU VAINQUEURS","POUR L'INSTANT... << Tu as fait une faute d'orthographe! >>
Ah oui, et quelle faute ! Merci de l'avoir signalée. Cependant je n'ai pas bien saisi ce que tu entendais par :
Citer
oui j'accepte mal qu'une personne faisant des erreurs d'orthographe qui changent la sonorité d'un mot me fasse des remarques
car il me semble que dans ma phrase l'ajout du "x" à la fin du "au" ne change en rien l'aspect phonétique de celle-ci (à moins que tu ne parles d'une autre faute ?). De plus, si tu connais des personnes irréprochables au niveau de n'importe quel domaine ou si tu en trouves un jour n'oublie pas de me faire signe. Il me semble pourtant que tu fais régulièrement des remarques sur ce forum à propos de la qualité des codes postés par les internautes (ce que je trouve tout à fait profitable). Tu sous-entendrais donc que puisque tu te permets de faire des remarques aux autres sur ce domaine, ton niveau en programmation serait irréprochable ? Laisse moi en douter...
Citer
PS: Il n'y a pas que Molière qui à écrit un français littéraire, il y a toute la pléthore de poètes et écrivains français.
Non sans blague ! Sache que la plupart des langues possèdent un équivalent éponymique (langue de Shakespear pour l'anglais, langue de Virgile pour le latin ...). Et il me semble qu'en aucun cas je n'ai dit que Molière ait été le seul à manier d'une façon remarquable cette langue sublime que tu as l'air de malmener au plus haut point.
Fin de l'aparté.
Merci tout de même à Sangohan38 et Sandro pour ces optimisations qui m'ont beaucoup appris et m'ont permis d'éliminer 219 octets par rapport au programme de départ
Cependant, je pense que cette partie de code est fausse Sandro :
Citer : Sandro
Code
D-10ent(0.1D->G <<avec D=6, G=6
peut je crois être transformé(car D est un entier positif) en
Autorisation : Membre
Nb de messages : 16
Inscrit le : Sam 04 Fév 2012, 23:16
Posté le : Jeu 19 Avr 2012, 12:49
Ah d'accord désolé. Je pensais que fpart(ou partDec en français) renvoyait la partie décimale sous forme unitaire, par exemple 6 avec 4.6, mais il s'avère que mon raisonnement était complètement faux; merci pour ton intervention Sandro
Avec toutes ces optimisations, je pense qu'un nouveau post de mon programme s'impose :
Code
If partDec([thêta)min]
:Then
: 0->[(thêta)min]
: "->chaîne0
:End
:EffEcr
:Lbl Z
:Menu(" CALCUL MENTAL "," JOUER",A," VAINQUEURS",B," QUITTER",C
:Lbl A
:1->H
:EffVar QEffvar LEffvar NEffVar ZInput "TON PSEUDO STPL:",chaîne1
:EffEcr
:Output(3,1,"OK "+chaîne1
:Output(4,1,"C'EST QUAND TU VEUX !
:Pause
:Repeat N=30
: Effvar QEffvar HEffEcr
: (N>9)entAléat(11,19->J
: (N>19)entAléat(11,20->M
: (N[inférieur ou égal à]9)entAléat(2,9->B
: (N<20)entAléat(2,9->C
: (B+J)*(C+M->D
: $E$2ent(.01D->L << C'est le E de la puissance de 10 que je noterai $E$ à partir de maintenant (sur TI on peut le trouver en faisant "2nde"+",")>>
: 10ent(0.1D->F
: If F>99:F-L->F
: 10partDec(.1D->G
: (L[différent de 0)(92-10ent((L-$E$2)/300)+3partDéc((L-$E$2)/300))+(F[différent de]0)(92-10ent((F-10)/30)+3partDéc((F-10)/30))+(G[différent de]0)(92-10ent((G-1)/3)+3partDéc((G-1)/3))+102(G=0)+((F<L)not(F
: Output(1,1,"LEVEL
: Output(1,8,N+1
: Output(7,1,"IL TE RESTE s
: If B+J>9
: Output(4,1,J
: If B+J[inférieur ou égal à]9
: Output(4,2,B
: Output(4,3,"*
: Output(4,4,C+M
: Output(4,6,"=
: For(I,1,4
: Disp "
: End
: For(I,200-50(N>4)-30(N>14),1,-1
: Output(7,13,ent(.25I
: codeTouche->K
: (K+Q)(K(différent de)45->Q
: End
: EffEcr
: If Q-H
: Goto (théta)
: 1+N->N
: For(I,1,80
: Output(4,4,"LEVEL UP !
: End
: EffEcr
: For(I,1,800
: If N-15
: 800->I
: If N=15
: Disp "AUGMENTER","VITESSE ?
: End
: For(I,1,$E$2(3(N=5)+5(1<partEnt(0.2N
: If N=5
: Output(4,3,"PLUS VITE !
: If N=10
: Disp "BIEN, ON VA","POUVOIR PASSER","AUX CHOSES","SERIEUSES =}
: If N=15
: Then
: Disp "TU PENSAIS","VRAIMENT AVOIR,"LE CHOIX x1 <<c'est le x1 des variables statistiques, accessible en tapant"var"->"Statistiques..."->"PTS"->"1>>
: Output(3,11,"D
: End
: If N=20
: Disp "IMPRESSIONANT !","MAIS SERAS-TU","CAPABLE D'ALLER","JUSQU'AU BOUT ?
: End
:End
:EffEcr
:Lbl (thêta)
:Output(3,1,chaîne1
:Disp "","DESOLE","","TU AS PERDU...","TON SCORE EST DE"
:Output(6,8,N
:If N=30
:Then
: Disp "","","","FELICITATION","","TU AS GAGNE !","","TON NOM ENTRERA
: Pause"DANS LA LEGENDE!
: EffEcr
: Disp "","ENFIN DANS LA","RUBRIQUE DEDIEE","AUX VAINQUEURS","POUR L'INSTANT...
: "("+chaîne1+")"+chaîne0->chaîne0
: 1+[(thêta)min]->[(thêta)min]
:End
:Pause
:EffEcr
:Goto Z
:Lbl B
:If [(thêta)min]>0
:Then
: longueur(chaîne0->L
: [(thêta)min]->I
: For(I,1,[(thêta)min]
: carChaîne(chaîne0,"("->N
: carChaîne(chaîne0,")"->M
: sous-Chaîne(chaîne0,N+1,M-1-N->chaîne8
: Disp chaîne8
: If non(partDec(7[^-1^]I:Pause
: sous-Chaîne(chaîne0,M+1,L-M)+"("+chaîne8+")->chaîne0
: End
:Else
: Output(4,7,"VIDE
:End
:Pause
:EffEcr
:Goto Z
:Lbl C
:EffEcr
:Disp "BY MOMOTHEFIRST"," =)
Autorisation : Membre
Nb de messages : 3293
Inscrit le : Sam 31 Déc 2005, 19:48
Posté le : Jeu 19 Avr 2012, 16:46
Je n'ai jamais vu un sujet avec autant de citations. Va falloir vous calmer: quand il s'agit du message précédent pas la peine de faire de citation.
Bon sinon à propos du $E$ c'est pour indiquer que c'est le E de la puissance de 10. Ainsi $E$2=100 ce qui fait un octet d'économisé.
@ Mystery-enigma: je voulais dire que je n'accepte pas qu'une personne faisant des fautes d'orthographes qui changent la phonétique (ex: vous avais au lieu de vous avez) me fassent des remarques ce qui n'est pas ton cas.
@ Sandro: Je ne vois pas l'intérêt de cette modification: "If Q[différent de H devient If Q-H" car cela n'économise pas d'octets. Pareil pour la modification qui la suit.
A part sa, dans ta dernière ligne de code je ne vois pas l'intérêt du 7^(-1)... Autant mettre I/7.
Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Jeu 19 Avr 2012, 17:02
Sandro te répondra probablement que c'est plus rapide.
(c'est vrai mais négligeable)
J'hallucine sur le nombres de modifications simples qui ont été effectuées.
Et les grosses simplifications sont bien aussi
Continue comme ça
(moi je ne suis pas vraiment libre, désolé)
---------------------- ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)
Autorisation : Membre
Nb de messages : 1366
Inscrit le : Ven 25 Mar 2011, 22:58
Posté le : Jeu 19 Avr 2012, 21:22
Oui, pour ces modifications, c'est un gain de temps (les tests, c'est lourd, même si ça l'est pas autant que les If), et en plus, c'est une habittude que je commence à prendre avec l'axe (ou même !IfA-B est plus léger que If A=B).
---------------------- mort à l'inutile, place à la mémoire libre et aux programmes
Autorisation : Membre
Nb de messages : 16
Inscrit le : Sam 04 Fév 2012, 23:16
Posté le : Jeu 19 Avr 2012, 22:53
@Sangohan38 : Désolé pour le malentendu sur les fautes de grammaire et changements de phonétique; je pensais que ta critique m'était adressée.
@Sandro : Je prends note de tes nouvelles optimisations. Par contre la seconde est en partie fausse puisque not(L) renvoie 1 si L=0 alors que L[différent de] 0 renvoie 0 si L=0.
Mais du coup on peut écrire ça:
Ce qui reprend ton idée avec l'histoire des not(.
Bon, bah... ça va nous faire 211 octets d'économisés ! On peut dire qu'on a fait pas mal de chemin depuis le premier code