| Serie de "And" | |
|
|
Auteur | Message |
---|
Yannick
Nombre de messages : 8611 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: Serie de "And" Sam 26 Juil 2014 - 13:13 | |
| Quelqu' un a t il une solution pour éviter une série de "and" interminable ? exemple : - Code:
-
Sub nine_letters() dim_local i%,j%,k%,l%,m%,n%,o%,p%,q%,m$,res%,nbl% nbl%=NL%-1 for i%=1 to nbl% for j%=1 to nbl% if j%<>i% for k%=1 to nbl% if i%<>j% and k%<>j% and i%<>k% for l%=1 to nbl% if i%<>j% and k%<>j% and i%<>k% and l%<>i% and l%<>j% and l%<>k% for m%=1 to nbl% if i%<>j% and k%<>j% and i%<>k% and l%<>i% and l%<>j% and l%<>k% and m%<>i% and m%<>j% and m%<>k% and m%<>l% for n%=1 to nbl% if i%<>j% and k%<>j% and i%<>k% and l%<>i% and l%<>j% and l%<>k% and m%<>i% and m%<>j% and m%<>k% and m%<>l% and n%<>i% and n%<>j% and n%<>k% and n%<>l% and n%<>m% for o%=1 to nbl% if i%<>j% and k%<>j% and i%<>k% and l%<>i% and l%<>j% and l%<>k% and m%<>i% and m%<>j% and m%<>k% and m%<>l% and n%<>i% and n%<>j% and n%<>k% and n%<>l% and n%<>m% and o%<>i% and o%<>j% and o%<>k% and o%<>l% and o%<>m% and o%<>n% for p%=1 to nbl% if i%<>j% and k%<>j% and i%<>k% and l%<>i% and l%<>j% and l%<>k% and m%<>i% and m%<>j% and m%<>k% and m%<>l% and n%<>i% and n%<>j% and n%<>k% and n%<>l% and n%<>m% and o%<>i% and o%<>j% and o%<>k% and o%<>l% and o%<>m% and o%<>n% and p%<>i% and p%<>j% and p%<>k% and p%<>l% and p%<>m% and p%<>n% and p%<>o% for q%=1 to nbl% if i%<>j% and k%<>j% and i%<>k% and l%<>i% and l%<>j% and l%<>k% and m%<>i% and m%<>j% and m%<>k% and m%<>l% and n%<>i% and n%<>j% and n%<>k% and n%<>l% and n%<>m% and o%<>i% and o%<>j% and o%<>k% and o%<>l% and o%<>m% and o%<>n% and p%<>i% and p%<>j% and p%<>k% and p%<>l% and p%<>m% and p%<>n% and p%<>o% and q%<>i% and q%<>j% and q%<>k% and q%<>l% and q%<>m% and q%<>n% and q%<>o% and q%<>p% m$=l$(i%)+l$(j%)+l$(k%)+l$(l%)+l$(m%)+l$(n%)+l$(o%) m$=trim$(m$) res% = dll_call3("InString",adr(base7$),adr(m$),0) if res%>0 res% = dll_call3("InString",adr(Liste$),adr(m$),0) if res%=0 Liste$=Liste$+m$+"," item_add L_mots%,m$ display end_if end_if end_if next q% end_if next p% end_if next o% end_if next n% end_if next m% end_if next l% end_if next k% end_if next j% next i% End_sub même la fenêtre du forum n' est pas assez large ( je cherche à créer item par item toute les combinaisons possibles avec des tirages de 2 à 15 lettres ) | |
|
| |
Klaus
Nombre de messages : 12298 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Serie de "And" Sam 26 Juil 2014 - 13:55 | |
| Je suppose que tu veux créer la liste des combinaisons en évitant les doublons ? Voici une solution très simple: 1. construis toutes les combinaisons, en les changeant dans une DLIST triée 2. recopie ensuite les éléments de cette DLIST dans une autre, en omettant tout simplement les éléments identiques au dernier lu. C'est tout... | |
|
| |
Yannick
Nombre de messages : 8611 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Sam 26 Juil 2014 - 18:29 | |
| Le problème est à la construction justement. C'est la que j' ai une serie de "and" interminable et qui grossit à l' ajout d'une lettre supplémentaire dans la combinaison. Après, je dis un grand merci à KGF.dll . je te mets le prog complet sur le webdav Scrabble_Help.zip sauf que dès que je passe 7 lettres, c' est aussi long que le carême... | |
|
| |
Klaus
Nombre de messages : 12298 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Serie de "And" Dim 27 Juil 2014 - 0:28 | |
| Je viens de penser à un truc - est-ce que tu as pensé au nombre de combinaisons possibles ? Au temps qu'il faut pour les construire, à la place qu'il faut pour les mémoriser, au temps qu'il faut pour y accéder ?
Le nombre total de mots de 2 à 15 lettres (en ne comptant que les majuscules non accentués, comme au scrabble), est de: (26 puissance 2) + (26 puissance 3) + ... + (26 puissance 15)
Je crois que ce n'est pas la peine d'exprimer cela par un nombre décimal. Quelque soit l'usage que tu envisages à en faire, je pense qu'il vaudrait mieux que tu essaies de trouver une autre solution. Désolé... | |
|
| |
Yannick
Nombre de messages : 8611 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Dim 27 Juil 2014 - 0:41 | |
| Je crois que j' ai une petite idée, mais je dois tester avant .... | |
|
| |
Klaus
Nombre de messages : 12298 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Serie de "And" Dim 27 Juil 2014 - 1:22 | |
| Rien que le dernier terme de cette somme, soit 26 puissance 15, est égal à: notation scientifique: 1,6772593 E+21 notation décimale: 1.677.259.300.000.000.000.000
Ce chiffre représente le nombre de combinaisons de 15 lettres. Donc, il faut 15 fois ce nombre en caractères pour mémoriser ces mots, soit: notation scientifique: 2,515889 E+22 notation décimale:25.158.990.000.000.000.000.000
1 To = 1000 Go = 1.000.000 Mo = 1.000.000.000.000 octets. Rien que le chiffre ci-dessus, représente 25.158.990.000 Tera-octets. Impossible à garder, ni en mémoire, ni sur le plus gros de tes disques. Et c'est sans parler des combinaisons de 14 lettres, 13 lettres etc.
Oublie cette idée et trouve autre chose. Désolé. | |
|
| |
Yannick
Nombre de messages : 8611 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Dim 27 Juil 2014 - 1:36 | |
| Sur tes encouragements, je pense que je vais laisser tomber pour les plus de 7 lettres. 7 lettres étant la limite du supportable... Quoi que mes fonctions ne gardent pas toutes les possibilités en mémoire elles sont comparées au fur et à mesure de leur création à la liste des mots autorisés par la fonction "instring" de Kgf.dll . les lettres du tirage sont placées dans un tableau de $ les possibilités de combinaison, sont créées par des boucles for...next imbriquées sauf qu' il faut que j' élimine les combinaisons du style : l$(1)+l$(1) et là cela donne une série de "And" Le problème n' est pas, je crois, la mémoire mais le temps de création de toutes les combinaisons. Après 7 lettres c' est...trop long tout simplement. | |
|
| |
Klaus
Nombre de messages : 12298 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Serie de "And" Dim 27 Juil 2014 - 1:54 | |
| Tu m'étonnes ! Même avec 7 lettres, le nombre de combinaisons, rien que pour les mots de 7 lettres, est de 80.311.810.176, soit plus de 80 milliards de mots de 7 lettres. A ajouter, les mots de 6 lettres, de 5 lettres etc. Peut-être ce problème de vitesse sera réglé par le compilateur. Mais je persiste à dire que le fait de construire toutes les combinaisons possibles n'est pas la bonne solution.
Essaie de prendre le problème à l'envers. Cherche des mots qui contiennent les 7 lettres de la donne, à partir d'une liste de mots autorisés (puisque tu dis que tu as une telle liste). Ce sera beaucoup plus rapide. Pour cela, le plus rapide est de créer une seconde liste des mots autorisés, mais en version "anagramme", avec toutes les lettres triées alphabétiquement. Il te suffit alors de classer les lettres de la donne alphabétiquement, puis de chercher si cet anagramme existe. Idem pour les combinaisons de 6 lettres etc. | |
|
| |
Yannick
Nombre de messages : 8611 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Dim 27 Juil 2014 - 2:14 | |
| Promis klaus, je vais voir mon pharmacien dès demain et je reprends quelque actions chez upsa... dès que je trouve une solution, je reviens. aller, au siècle prochain ! | |
|
| |
Klaus
Nombre de messages : 12298 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Serie de "And" Dim 27 Juil 2014 - 2:18 | |
| Bonne nuit ! Moi aussi, j'ai rendez-vous avec Morphée... | |
|
| |
Contenu sponsorisé
| Sujet: Re: Serie de "And" | |
| |
|
| |
| Serie de "And" | |
|