[R] Liste de nombre et chemin
Règles du forum
- Merci de consulter la section "Règles du forum" et plus particulièrement "Règles et Mentions Légales du site autoitscript.fr" avant d'écrire un message.
- mangaskiff
- Niveau 4

- Messages : 72
- Enregistré le : sam. 25 juil. 2009 23:45
- Status : Hors ligne
[R] Liste de nombre et chemin
Bonjour/Bonsoir,
Je sais que le titre n'est pas très claire mais je n'ai pas trouver mieux.
Voilà mon problème:
Admettons que nous disposons de X listes de nombres de Y longueur on veux trouver tout les chemins possibles et les mettre dans un tableau.
Exemple:
On a 2 listes de nombres : "2;3;4" et 7;8" les chemins possibles sont alors 2-7 , 2-8 , 3-7 , 3-8 , 4-7 ,4-8 ici Tableau[0] = "2-7" Tableau[1] = "2-8" et ainsi de suite. Le but est de trouver ces chemins dans un cas générale.
J’espère avoir été assez claire et je vous remercie d'avance pour votre aide.
EDIT:
Je viens de trouver ça en cherchant sur papier. Il semble que le nombre de chemin possible soit égale au produit du nombre de chiffres par lignes.
Exemple :
2;3;4 -> 3 chiffres
7;8 -> 2 chiffres
2*3 = 6 chemins possibles.
Je sais pas si ça peut aider mais au moins il y a quelque chose ^^
Je sais que le titre n'est pas très claire mais je n'ai pas trouver mieux.
Voilà mon problème:
Admettons que nous disposons de X listes de nombres de Y longueur on veux trouver tout les chemins possibles et les mettre dans un tableau.
Exemple:
On a 2 listes de nombres : "2;3;4" et 7;8" les chemins possibles sont alors 2-7 , 2-8 , 3-7 , 3-8 , 4-7 ,4-8 ici Tableau[0] = "2-7" Tableau[1] = "2-8" et ainsi de suite. Le but est de trouver ces chemins dans un cas générale.
J’espère avoir été assez claire et je vous remercie d'avance pour votre aide.
EDIT:
Je viens de trouver ça en cherchant sur papier. Il semble que le nombre de chemin possible soit égale au produit du nombre de chiffres par lignes.
Exemple :
2;3;4 -> 3 chiffres
7;8 -> 2 chiffres
2*3 = 6 chemins possibles.
Je sais pas si ça peut aider mais au moins il y a quelque chose ^^
Modifié en dernier par mangaskiff le mer. 04 avr. 2012 23:21, modifié 1 fois.
- mikell
- Spammer !

- Messages : 6292
- Enregistré le : dim. 29 mai 2011 17:32
- Localisation : Deep Cévennes
- Status : Hors ligne
Re: [..] Liste de nombre et chemin
► Afficher le texte
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
- mangaskiff
- Niveau 4

- Messages : 72
- Enregistré le : sam. 25 juil. 2009 23:45
- Status : Hors ligne
Re: [..] Liste de nombre et chemin
Merci de ton aide je vais essayer de généraliser ce code. Je ne met pas tout de suite en résolue ça évitera de rouvrir un topic.
Edit: j'ai beau cherché je n'y arrive pas car le nombre de boucles For dépend du nombre de liste et je ne vois pas comment rendre le nombre de boucle For variable.
Edit: j'ai beau cherché je n'y arrive pas car le nombre de boucles For dépend du nombre de liste et je ne vois pas comment rendre le nombre de boucle For variable.
- mikell
- Spammer !

- Messages : 6292
- Enregistré le : dim. 29 mai 2011 17:32
- Localisation : Deep Cévennes
- Status : Hors ligne
Re: [..] Liste de nombre et chemin
Moi non plus, et je t'avoue que celui qui donne la solution, je lui tire mon chapeau
Faudrait peut-être essayer une array à n dimensions, ou une array d'arrays

Il manque une rubrique " défis " dans ce forum
Faudrait peut-être essayer une array à n dimensions, ou une array d'arrays
Il manque une rubrique " défis " dans ce forum
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Re: [..] Liste de nombre et chemin
effectivement, faire varier le nombre de boucle va être un peu compliqué ...
Par contre, faire une fonction récursive paraîtrait assez adapté ...
Si j'ai le temps, je posterai un petit script pour faire cela demain. L'idée est de générer le chemin petit à petit, quelque soit la profondeur de l'appel, donc le nombre de chiffre.
Edit : En fait, j'avais le temps ce soir ...
J'ai repris le code de mikell pour la partie graphique.
Le mieux serait quand même de passer par une liste de dimension deux ... Mais bon, comme je l'ai mis en commentaire, tout dépend de la façon dont tu as tes listes a l'origine.
Par contre, faire une fonction récursive paraîtrait assez adapté ...
Si j'ai le temps, je posterai un petit script pour faire cela demain. L'idée est de générer le chemin petit à petit, quelque soit la profondeur de l'appel, donc le nombre de chiffre.
Edit : En fait, j'avais le temps ce soir ...
J'ai repris le code de mikell pour la partie graphique.
Code : Tout sélectionner
$Form1 = GUICreate("Form1", 150, 310, 200, 100)
$List = GUICtrlCreateList("", 20, 20, 110, 250)
$label = GUICtrlCreateLabel("", 20, 280, 120, 20)
GUISetState()
Dim $liste1[5] = [0, 1, 2, 3, 4], $string = "", $n = 0
Dim $liste2[6] = ["x", "y", "z", "w", "v", "u"]
Dim $liste3[4] = [5, 6, 7, 8]
Dim $liste4[10] = [1,2,3,4,5,6,7,8,9,0]
$nombre_de_liste = 4
dim $listeglobale[$nombre_de_liste] ;liste regroupant toutes les listes précédentes ...
;Faire une liste de dimension 2 serait plus adapté car plus générale
$listeglobale[0] = $liste1 ; et surtout éviterait ces lignes
$listeglobale[1] = $liste2 ; qui ne sont pas généralisable ...
$listeglobale[2] = $liste3
$listeglobale[3] = $liste4
$n = 0
Func generer_chemin($tableau_en_cours,$string)
$liste_temp = $listeglobale[$tableau_en_cours]
for $i = 0 to UBound($liste_temp) -1
if $tableau_en_cours = $nombre_de_liste -1 Then
GUICtrlSetData($List, $string & $liste_temp[$i] & "|")
$n += 1
Else
generer_chemin($tableau_en_cours + 1,$string & $liste_temp[$i] )
EndIf
Next
EndFunc
generer_chemin(0,"")
GUICtrlSetData($label, $n & " chemins possibles")
While GUIGetMsg()<>-3
Wend
Modifié en dernier par ragnoff le mar. 27 mars 2012 00:13, modifié 3 fois.
- jchd
- AutoIt MVPs (MVP)

- Messages : 2284
- Enregistré le : lun. 30 mars 2009 22:57
- Localisation : Sud-Ouest de la France (43.622788,-1.260864)
- Status : Hors ligne
Re: [..] Liste de nombre et chemin
Je relèrerais bien, mais je ça encore renforcer l'étiquette "SQLite-maniac" qui me colle au derche comme le papier au bonbon.
(Mine de rien c'est une piste mais à vue de nez, elle plus propre à faire en SQLite qu'en récursion...)
Je vois que notre mangeur de mangas y a pensé pendant que je claviottais tranquillement.
(Mine de rien c'est une piste mais à vue de nez, elle plus propre à faire en SQLite qu'en récursion...)
Je vois que notre mangeur de mangas y a pensé pendant que je claviottais tranquillement.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
- Tlem
- Site Admin

- Messages : 11830
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Liste de nombre et chemin
P'tet qu'en passant par un tableau de liste, ce serait 'plus simple'.
Là, je suis rentré du taf un peut tard, donc j'ai peut être l'esprit pas très clair, mais demain je devrais pouvoir rentrer un peut plus tôt (peut être). ^^
Ce que je verrais bien au début :
Là, je suis rentré du taf un peut tard, donc j'ai peut être l'esprit pas très clair, mais demain je devrais pouvoir rentrer un peut plus tôt (peut être). ^^
Ce que je verrais bien au début :
Code : Tout sélectionner
$saList = "2;3;4#7;8"
$alist = StringSplit($saList, "#")Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
- sksbir
- Niveau 7

- Messages : 384
- Enregistré le : lun. 26 oct. 2009 17:57
- Localisation : Lyon
- Status : Hors ligne
Re: [..] Liste de nombre et chemin
En reprenant toutes les bonnes idées de tout le monde, voici le résultat en 20 lignes de code
( et sans sqllite, n'en déplaise à jchd, la récursivité, c'est quand même la classe
)
► Afficher le texte
- mikell
- Spammer !

- Messages : 6292
- Enregistré le : dim. 29 mai 2011 17:32
- Localisation : Deep Cévennes
- Status : Hors ligne
Re: [..] Liste de nombre et chemin
Bah on peut simplifier, autoit autorise l'array d'arraysragnoff a écrit :et surtout éviterait ces lignes ...
► Afficher le texte
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
- Tlem
- Site Admin

- Messages : 11830
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Liste de nombre et chemin
Pas testé, mais visiblement, je ne suis pas rentré assez tôt.
Pas grave, demain je me fait la même journée que lundi ...
Heureusement, mikell veille au grain.
Pas grave, demain je me fait la même journée que lundi ...
Heureusement, mikell veille au grain.
Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
- mikell
- Spammer !

- Messages : 6292
- Enregistré le : dim. 29 mai 2011 17:32
- Localisation : Deep Cévennes
- Status : Hors ligne
Re: [..] Liste de nombre et chemin
Mais boss, je veille parce que j'ai répondu au post n°1 donc je le suis ce sujet, c'est normal
Et puis j'espérais bien que le mot 'défi' allait provoquer des réactions
Bon le principal intérêt que je vois au StringSplit est d'échapper à cette fichue limitation dans Autoit qui donne l'erreur "Too many subscripts used for an array" si on tente une array d'arrays littérale, mais curieusement, si on fait la même chose avec des handles d'arrays, là ça marche et on n'a pas d'erreur...
Et puis j'espérais bien que le mot 'défi' allait provoquer des réactions
Bon le principal intérêt que je vois au StringSplit est d'échapper à cette fichue limitation dans Autoit qui donne l'erreur "Too many subscripts used for an array" si on tente une array d'arrays littérale, mais curieusement, si on fait la même chose avec des handles d'arrays, là ça marche et on n'a pas d'erreur...
même sil'aide a écrit :So an AutoIt-Array could also contain different types, even other Arrays
$Array[3]=$AnotherArray
Donc c'est concluant, bravo aux scripteursthe use of an Array inside another Array will severely affect the execution speed of your script
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
- Tlem
- Site Admin

- Messages : 11830
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Liste de nombre et chemin
Donc coup de chapeau à sksbir, puisque c'est lui qui a répondu en premier.mikell a écrit :je t'avoue que celui qui donne la solution, je lui tire mon chapeau
Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
- mikell
- Spammer !

- Messages : 6292
- Enregistré le : dim. 29 mai 2011 17:32
- Localisation : Deep Cévennes
- Status : Hors ligne
Re: [..] Liste de nombre et chemin
Bravo sksbir, mais le coup de chapeau va à ragnoff, qui a répondu en premiersksbir a écrit :En reprenant toutes les bonnes idées de tout le monde, voici le résultat ....
En plus il utilise ma gui, donc ma sympathie lui est acquise
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
- Tlem
- Site Admin

- Messages : 11830
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Liste de nombre et chemin
Ha, oui pardon, c'est le premier à avoir proposer la récursion.
Donc +1.
Donc +1.
Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
- jchd
- AutoIt MVPs (MVP)

- Messages : 2284
- Enregistré le : lun. 30 mars 2009 22:57
- Localisation : Sud-Ouest de la France (43.622788,-1.260864)
- Status : Hors ligne
Re: [..] Liste de nombre et chemin
Tout dépend de la combinatoire et de la durabilité. Si c'est juste pour avoir une petite liste comme celle de l'exemple, je suis OK pour la recréer au vol. Mais dès qu'on veux généraliser et taper dans N listes de K items, ça flambe vite, surtout si on veut conserver la chose.
D'ailleurs, je parlais de récursivité pendant que le post précédent arrivait.
Bon, c'est vrai qu'actuellement j'ai tendance à voir SQLite en grand car je bosse sur une base de 850 millions de rangs, rien que dans la plus grosse table.
D'ailleurs, je parlais de récursivité pendant que le post précédent arrivait.
Bon, c'est vrai qu'actuellement j'ai tendance à voir SQLite en grand car je bosse sur une base de 850 millions de rangs, rien que dans la plus grosse table.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
- sksbir
- Niveau 7

- Messages : 384
- Enregistré le : lun. 26 oct. 2009 17:57
- Localisation : Lyon
- Status : Hors ligne
Re: [..] Liste de nombre et chemin
je ne me suis pas caché d'avoir repris les idées de tout le monde.mikell a écrit :Bravo sksbir, mais le coup de chapeau va à ragnoff, qui a répondu en premiersksbir a écrit :En reprenant toutes les bonnes idées de tout le monde, voici le résultat ....
En plus il utilise ma gui, donc ma sympathie lui est acquise![]()
Concernant la gui, pas reprise car hors sujet. On pouvait tout aussi bien utiliser filewriteline pour sortir les résultats en temps réel sur la console, mais si j'ai utilisé un tableau, c'est que dans la demande d'origine il est stipulé ceci:
@jchd : c'est vrai qu'on va vite emplafonner la mémoire en voulant stocker dans un tableau, mais grace au calcul que je cite ici...et les mettre dans un tableau
On peut donc dimensionner le tableau dès le départ, et surtout anticiper pendant la saisie des données et donc avant le calcul récursif afin de ne pas exploser la mémoire.Il semble que le nombre de chemin possible soit égale au produit du nombre de chiffres par lignes.
Il me semble bien que le mot exact est "récursivité". recursion étant le mot en anglais.Tlem a écrit :Ha, oui pardon, c'est le premier à avoir proposer la récursion.![]()
Donc +1.
- mangaskiff
- Niveau 4

- Messages : 72
- Enregistré le : sam. 25 juil. 2009 23:45
- Status : Hors ligne
Re: [..] Liste de nombre et chemin
Désolé du temps de réponse j'ai pas eu trop de temps avec mes exam'. Concernant le sujet je vais essayer plusieurs choses ce week-end donc je laisse encore en non-résolu juste pour la fin de la semaine. Merci encore pour toutes ces réponses.

