Poster un nouveau sujet Poster une réponse
carliste ?
Auteur Message
Persalteas



Autorisation : Membre
Nb de messages : 2164
Inscrit le : Sam 23 Jan 2010, 20:09
Posté le : Mar 07 Fév 2012, 10:51   Citer 

salut, je cherche le moyen d'avoir l'algorithme le plus optimisé vitesse/poids afin de résoudre la chose suivante:

J'ai une liste de boléens de 8 valeurs, dont toutes égales à zéro, sauf une.
Il me faut un alogrithme pour trouver en quelle position de la liste se trouve celle qui vaut un.

exemple: si c'est {0,0,1,0,0,0,0,0}, que l'algo me renvoie 3.


Est-ce que quelqu'un saurait faire ? frozen.gif

Note: pour l'instant j'utilise:

Code

:For(D,1,8
:If L1(D
:D->E
:End
:Disp E



l1 étant ma liste et E le résultat. Mais ça me semble lourd et comme je sais qu'il y a des petits obsédés de l'optimisation... godgrace.gif

 Adresse email Haut de page Bas de page 
 
sandro



Autorisation : Membre
Nb de messages : 1387
Inscrit le : Ven 25 Mar 2011, 22:58
Posté le : Mar 07 Fév 2012, 11:15   Citer 

je proposerais plutôt
Code
sum(L1seq(X,X,1,8


ou
Code
max(L1seq(X,X,1,8


ou
Code
sum(L1{1,2,3,4,5,6,7,8


ou
Code
max(L1{1,2,3,4,5,6,7,8



(à voir lequel des 4 est le plus rapide)
Sandro

----------------------
mort à l'inutile, place à la mémoire libre et aux programmes
 Adresse email Haut de page Bas de page 
 
Persalteas



Autorisation : Membre
Nb de messages : 2164
Inscrit le : Sam 23 Jan 2010, 20:09
Posté le : Mar 07 Fév 2012, 11:18   Citer 

Aha... c'est pas mal Sandro, je vais regarder ça...

C'est même bien... bigmouth.gif

Merci beaucoup ! glasses.gif

Le plus rapide, j'en sais rien... J'utilise ça dans une grande boucle, je ne sais pas le temps qu'elle prend. Mais t'inquiète pas mon prog est relativement fluide.

 Adresse email Haut de page Bas de page 
 
linkakro



Autorisation : Membre
Nb de messages : 3767
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Mar 07 Fév 2012, 18:07   Citer 

Dommage que mon article ne t'ai pas été utile. Cela signifie qu'il n'est pas encore parfait.

D'ailleurs j'ai pensé précisément à un des exemples de sandro avant de le lire. Le reste lui est tout à fait original.

----------------------
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)

Pour tout le monde et surtout les débutants, quelques-uns des articles courants :
*Traductions Algorithmie/Ti-Basic.
*Caractères spéciaux sur Tout82
Les défauts du TI-Basic : Goto_versus_algo et DelVar/End/Lbl/guillemet/store
 Adresse email Haut de page Bas de page 
 
Persalteas



Autorisation : Membre
Nb de messages : 2164
Inscrit le : Sam 23 Jan 2010, 20:09
Posté le : Mar 07 Fév 2012, 21:07   Citer 

Linkakro: je n'ai pas lu tout tes articles. minied.gif

Lequel en parle ?

 Adresse email Haut de page Bas de page 
 
Google_AdSense



Publicité    



 
linkakro



Autorisation : Membre
Nb de messages : 3767
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Mar 07 Fév 2012, 23:55   Citer 

Ah... c'est ballot, je croyais vraiment que tu lisais tout.
C'est celui sur les tests et les optimisations.

J'ai ajoûté un exemple proche de ce sujet. (les autres ne le mentionnaient pas directement)

D'ailleurs en le relisant je me demande s'il est réellement utile : il semble trop technique et pas assez ludique.

----------------------
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)

Pour tout le monde et surtout les débutants, quelques-uns des articles courants :
*Traductions Algorithmie/Ti-Basic.
*Caractères spéciaux sur Tout82
Les défauts du TI-Basic : Goto_versus_algo et DelVar/End/Lbl/guillemet/store
 Adresse email Haut de page Bas de page 
 
Persalteas



Autorisation : Membre
Nb de messages : 2164
Inscrit le : Sam 23 Jan 2010, 20:09
Posté le : Mer 08 Fév 2012, 8:31   Citer 

Ha, ben voilà.

Je ne lis que le meilleur de ce forum godgrace.gif
Pas les exemples hors-sujet godgrace.gif

Enfin bon, dommage linkakro, merci Sandro

 Adresse email Haut de page Bas de page 
 
Sangohan38



Autorisation : Membre
Nb de messages : 3370
Inscrit le : Sam 31 Déc 2005, 19:48
Posté le : Mer 08 Fév 2012, 19:54   Citer 

J'en ai encore une à tester:

Code
9-sum(cumSum(L1



L'avantage c'est qu'elle est généralisable par la formule

Code
1+dim(L1)-sum(cumSum(L1



Sangohan38

 Adresse email Haut de page Bas de page 
 
Persalteas



Autorisation : Membre
Nb de messages : 2164
Inscrit le : Sam 23 Jan 2010, 20:09
Posté le : Mer 08 Fév 2012, 23:37   Citer 

Merci, ça se raccourcit de plus en plus... bigmouth.gif


ça sert a quoi, au juste, cumSum( ?

parce que la, je te crois sur parole, sans comprendre ta formule...

 Adresse email Haut de page Bas de page 
 
Sangohan38



Autorisation : Membre
Nb de messages : 3370
Inscrit le : Sam 31 Déc 2005, 19:48
Posté le : Jeu 09 Fév 2012, 0:23   Citer 

cumsum( sert à faire la somme cumulée de la liste (on ajoute le 1er terme au second et c'est le nouveau second terme, le 2eme et 3eme et c'est le nouveau 3eme etc).
Par exemple dans le cas donné, on obtient {0,0,1,1,1,1,1,1} car on ajoute 0 au 1 à partir de la 4eme ligne.
Si on somme, on a donc le nombre de lignes qui valent 1 et du coup si on soustrait la taille de la liste par ce nombre, on a le nombre de lignes avant le 1 d'où l'utilité de rajouté 1 afin de connaitre la ligne du premier terme égal à 1.

Sangohan38

 Adresse email Haut de page Bas de page 
 
Google_AdSense



Publicité    



 
Persalteas



Autorisation : Membre
Nb de messages : 2164
Inscrit le : Sam 23 Jan 2010, 20:09
Posté le : Jeu 09 Fév 2012, 21:04   Citer 

extraterre.gif

Je dois avouer que c'est bien réfléchi.

Merci pour le tuyau.

 Adresse email Haut de page Bas de page 
 
Poster un nouveau sujet Poster une réponse





  Powered by Fire-Soft-Board v1.0.10 © 2004 - 2024 Groupe FSB
Page générée en 9 requêtes
BlackOne par Grimmlink