Autorisation : Membre
Nb de messages : 3767
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Mar 31 Juil 2012, 14:48
C'est très bien.
Tu dépasses mes espérances, je n'avais pas creusé le problème à ce point là.
Cependant tu as commis une faute de frappe.
Code
:If K:Then:1->L1(B+16-1
// corrigé par
:If K:Then:1->L1(B+16(A-1
D'autre part tu peux réécrire les booléen de cette manière, histoire que ce soit plus agréable à recopier :
Code
K=24 et B=/=1
K=24 et B-1
---------------------- 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 : 373
Inscrit le : Jeu 23 Sep 2010, 16:05
Posté le : Mar 31 Juil 2012, 15:05
Ok merci je viens de corriger !
Mais comment à tu as fait pour trouver cette erreur ? D:
T'es trop fort !
Il faut savoir que la ligne: :Repeat L1(B+16(A-1
N'est pas correcte. Elle devrait être: :While not(L1(B+16(A-1
Mais personnellement je préfère qu'il y ai une instruction en moins sur cette commande quitte à ce que la boucle se répète une fois de plus à la fin.
Autorisation : Membre
Nb de messages : 3767
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Mar 31 Juil 2012, 20:51
Repeat L1(B+16(A-1
est parfaitement juste puisque chaque case qu'on quitte est immédiatement modifiée.
J'ai diagnostiqué deux problèmes :
-l'abscence de remise à zéro de la liste au début peut causer un nombre d'obstacles faux
-l'abscence de vérification de case vierge avant affectation par l'aléatoire permet un nombre d'obstables parfois inférieur à l'objectif
J'ai utilisé une boucle autour du codeTouche, c'est plus simple qu'utiliser un Then.
Code
EffEcr
Input "NIVEAU ",N
EffListe L1
128->dim(L1
For(A,1,N
Repeat not(L1(Ans // Revenez à la version précédente ici si vous ne trouvez
entAléat(2,128 // pas nécessaire d'assurer la présence systématique de
End // N obstacles exactement.
1->L1(Ans //
End
1->B:0->K
For(A,1,128
Output(B,A-K,sub("0+",L1(A)+1,1
If A=16B:Then:B+1->B:K+16->K
End:End
1->A:1->B
Repeat L1(B+16(A-1
Output(A,B,"e
Repeat K
codeTouche->K
End
1->L1(B+16(A-1
Output(A,B," "
B-(K=24 et B-1)+(K=26 et B-16->B
A-(K=25 et A-1)+(K=34 et A-8->A
End
Output(8,1,somme(L1)-N
Output(8,4,"/128 "
EffListe L1
---------------------- 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 : 373
Inscrit le : Jeu 23 Sep 2010, 16:05
Posté le : Mar 31 Juil 2012, 21:42
Oui tu as raison, l'idée du ":RepeatK:codeTouche->K:End" me plait beaucoup.
Cependant "l'abscence de vérification de case vierge" je trouve que ce n'est pas ce qu'il y a de plus nécessaire. C'est une version soft alors bon...
C'est d'ailleurs pour cette raison que j'ai omis le démarrage et la l'affichage du score en pourcentage.
De plus le risque est faible pour N de 1 à 8. Au de là faut être un pro !
Mon record est de 100% au niveau 6 !
Je vais quand même voir ce que je peux faire.
Je compte inverser les 0 avec les 1 dans la liste et ainsi trouver quelque chose qui resolverai le problème des cases vides et de l’efface liste au début en même temps