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
|
|
|
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 ?
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...
|
|
|
|
sandro
Autorisation : Membre
Nb de messages : 1387
Inscrit le : Ven 25 Mar 2011, 22:58
|
Posté le : Mar 07 Fév 2012, 11:15
|
|
|
je proposerais plutôt
ou
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 |
|
|
|
Persalteas
Autorisation : Membre
Nb de messages : 2164
Inscrit le : Sam 23 Jan 2010, 20:09
|
Posté le : Mar 07 Fév 2012, 11:18
|
|
|
Aha... c'est pas mal Sandro, je vais regarder ça...
C'est même bien...
Merci beaucoup !
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.
|
|
|
|
linkakro
Autorisation : Membre
Nb de messages : 3767
Inscrit le : Lun 19 Oct 2009, 21:25
|
Posté le : Mar 07 Fév 2012, 18:07
|
|
|
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 |
|
|
|
Persalteas
Autorisation : Membre
Nb de messages : 2164
Inscrit le : Sam 23 Jan 2010, 20:09
|
Posté le : Mar 07 Fév 2012, 21:07
|
|
|
Linkakro: je n'ai pas lu tout tes articles.
Lequel en parle ?
|
|
|
|
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
|
|
|
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 |
|
|
|
Persalteas
Autorisation : Membre
Nb de messages : 2164
Inscrit le : Sam 23 Jan 2010, 20:09
|
Posté le : Mer 08 Fév 2012, 8:31
|
|
|
Ha, ben voilà.
Je ne lis que le meilleur de ce forum
Pas les exemples hors-sujet
Enfin bon, dommage linkakro, merci Sandro
|
|
|
|
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
|
|
|
J'en ai encore une à tester:
L'avantage c'est qu'elle est généralisable par la formule
Code | 1+dim(L1)-sum(cumSum(L1 |
Sangohan38
|
|
|
|
Persalteas
Autorisation : Membre
Nb de messages : 2164
Inscrit le : Sam 23 Jan 2010, 20:09
|
Posté le : Mer 08 Fév 2012, 23:37
|
|
|
Merci, ça se raccourcit de plus en plus...
ça sert a quoi, au juste, cumSum( ?
parce que la, je te crois sur parole, sans comprendre ta formule...
|
|
|
|
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
|
|
|
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
|
|
|
|
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
|
|
|
Je dois avouer que c'est bien réfléchi.
Merci pour le tuyau.
|
|
|
|