Utilisateur anonyme
-
10 août 2006 à 00:52
HCD
Messages postés86Date d'inscriptionjeudi 18 août 2005StatutMembreDernière intervention20 février 2007
-
20 sept. 2006 à 23:12
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
HCD
Messages postés86Date d'inscriptionjeudi 18 août 2005StatutMembreDernière intervention20 février 2007 2 sept. 2006 à 21:55
Merci WARNY pour ta réponse.
Je vais rechercher l'article en question dans ce magazine.
cs_Warny
Messages postés473Date d'inscriptionmercredi 7 août 2002StatutMembreDernière intervention10 juin 2015 1 sept. 2006 à 08:56
C'etait dans l'excelent mais oh combien complexe hebdomadaire "la recherche", et je dois avouer que c'était assez chaud.
Le principe était de rajouter 2 dimensions (pour arriver à 4 dimensions) à la représentation de l'échiquier ce qui permettait d'éliminer certains tests récurrents.
Ceci dit, je dois avouer que l'explication complète était hors de portée et de ma comprehension et de ma mémoire.
Tout ce que j'ai retenu de l'article, c'est que pratiquement tous les problèmes d'echecs pouvaient être interprétés dans un espace fini à 4 dimensions.
HCD
Messages postés86Date d'inscriptionjeudi 18 août 2005StatutMembreDernière intervention20 février 2007 31 août 2006 à 22:25
A l'attention de WARNY
Merci pour ton conseil, mais comme je l'ai dit le 18/08, j'ai pris finalement le parti de supprimer le compteur J.
Je serais très intéressé d'en savoir plus sur la solution du circuit fermé que tu évoques.
cs_Warny
Messages postés473Date d'inscriptionmercredi 7 août 2002StatutMembreDernière intervention10 juin 2015 28 août 2006 à 18:19
Salut,
Déclare J en double, mais fait attention à la précision maximum pour rester en entier.
Le problème a trouvé une solution exacte pour le circuit fermé du cavalier (retour à la case départ) il y a 3 ans.
HCD
Messages postés86Date d'inscriptionjeudi 18 août 2005StatutMembreDernière intervention20 février 2007 12 août 2006 à 18:50
A l'attention de Charles Racaud
Surtout ne sois pas désolé !
Tu me permets de progresser sérieusement.
Oubli réparé pour L et k.
Par contre pour J le type Long ne suffit pas, car cette variable dépasse très vite la capacité autorisée.
Finalement, j'ai supprimé ce compteur d'itérations qui n'était pas essentiel en fait.
Au résultat de toutes les corrections, l'algorithme tourne deux fois plus vite encore.
Encore merci et à suivre.
Désolé, c'est encore moi
T'as oublier de déclaré L et k
Et pouquoi garder J en varient ?
Integer: de -32767 à 32767
Long: de -2147483647 à 2147483647
Donc déclare J en long, je pense que c'est suffisant.
__
Kenji
HCD
Messages postés86Date d'inscriptionjeudi 18 août 2005StatutMembreDernière intervention20 février 2007 12 août 2006 à 01:13
A l'attention de Charles Racaud & de DARKSIDIOUS
Encore merci à tous les deux.
Je pense avoir compris cette fois qu'il fallait déclarer les variables séparément.
Le fait est que la vitesse d'itération double presque.
A suivre
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013131 10 août 2006 à 12:51
sinon aussi, en VB, pour faire des commentaires, utilise le caractère d'apostrophe, et évite le "rem" qui est plutôt hérité du BASIC.
Non, pas varient.
DKS ne t'as pas dit de toutes les déclaré en varient, il t?a dit que tu les avais déclaré en varient. (Pas de type = varient)
En integer serait donc effectivement plus appropriée.
De plus :
Dim N, I, P, x, J, µ As Integer
Seul µ est du type Integer, les autres de type Varient
Il faut faire Dim N As Integer, I As Integer, P As Integer, x As Integer, J As Integer, µ As Integer
Idem pour Dim T(1 To 8, 1 To 64), A(1 To 64), B(1 To 64), C(1 To 64), D(1 To 64),E(1 To 64) As Variant
HCD
Messages postés86Date d'inscriptionjeudi 18 août 2005StatutMembreDernière intervention20 février 2007 10 août 2006 à 12:17
A l'attention de Charles Racaud & de DARKSIDIOUS
Merci pour vos précieux commentaires.
J' ai modifié le code en déclarant toutes les variables comme étant de type "Variant".
(Comme toutes les valeurs sont des entiers, je pensais qu'il était mieux de choisir le type "Integer ???).
Pour la visualisation sur la feuille EXCEL, j'ai choisi une largeur de 1.17 pour les 64 premières colonnes : cela permet de voir les solutions s'afficher intégralement les unes après les autres.
HCD
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013131 10 août 2006 à 08:31
Oui, surtout que dans :
Dim T(1 To 8, 1 To 64), A(1 To 64), B(1 To 64), C(1 To 64), D(1 To 64), E(1 To 64) As Integer
Seul E est de type Integer, les autres étant de type Variant => ca ralentit pas mal l'éxécution !
Revois un peu la présentation de ton code.
Evite de mettre tout ton code sur une seule ligne. (Pour l'initialisation de tes valeurs ca va mais pas pour le reste)
T'as oublié de déclarer pas mal de variable. Ajoute un Option Explicit au début.
20 sept. 2006 à 23:12
Merci : ce site est en effet très intéressant
17 sept. 2006 à 15:19
http://www.recreomath.qc.ca/dict_cavalier.htm
2 sept. 2006 à 21:55
Je vais rechercher l'article en question dans ce magazine.
1 sept. 2006 à 08:56
Le principe était de rajouter 2 dimensions (pour arriver à 4 dimensions) à la représentation de l'échiquier ce qui permettait d'éliminer certains tests récurrents.
Ceci dit, je dois avouer que l'explication complète était hors de portée et de ma comprehension et de ma mémoire.
Tout ce que j'ai retenu de l'article, c'est que pratiquement tous les problèmes d'echecs pouvaient être interprétés dans un espace fini à 4 dimensions.
31 août 2006 à 22:25
Merci pour ton conseil, mais comme je l'ai dit le 18/08, j'ai pris finalement le parti de supprimer le compteur J.
Je serais très intéressé d'en savoir plus sur la solution du circuit fermé que tu évoques.
28 août 2006 à 18:19
Déclare J en double, mais fait attention à la précision maximum pour rester en entier.
Le problème a trouvé une solution exacte pour le circuit fermé du cavalier (retour à la case départ) il y a 3 ans.
12 août 2006 à 18:50
Surtout ne sois pas désolé !
Tu me permets de progresser sérieusement.
Oubli réparé pour L et k.
Par contre pour J le type Long ne suffit pas, car cette variable dépasse très vite la capacité autorisée.
Finalement, j'ai supprimé ce compteur d'itérations qui n'était pas essentiel en fait.
Au résultat de toutes les corrections, l'algorithme tourne deux fois plus vite encore.
Encore merci et à suivre.
HCD
12 août 2006 à 01:42
T'as oublier de déclaré L et k
Et pouquoi garder J en varient ?
Integer: de -32767 à 32767
Long: de -2147483647 à 2147483647
Donc déclare J en long, je pense que c'est suffisant.
__
Kenji
12 août 2006 à 01:13
Encore merci à tous les deux.
Je pense avoir compris cette fois qu'il fallait déclarer les variables séparément.
Le fait est que la vitesse d'itération double presque.
A suivre
10 août 2006 à 12:51
10 août 2006 à 12:27
DKS ne t'as pas dit de toutes les déclaré en varient, il t?a dit que tu les avais déclaré en varient. (Pas de type = varient)
En integer serait donc effectivement plus appropriée.
De plus :
Dim N, I, P, x, J, µ As Integer
Seul µ est du type Integer, les autres de type Varient
Il faut faire Dim N As Integer, I As Integer, P As Integer, x As Integer, J As Integer, µ As Integer
Idem pour Dim T(1 To 8, 1 To 64), A(1 To 64), B(1 To 64), C(1 To 64), D(1 To 64),E(1 To 64) As Variant
10 août 2006 à 12:17
Merci pour vos précieux commentaires.
J' ai modifié le code en déclarant toutes les variables comme étant de type "Variant".
(Comme toutes les valeurs sont des entiers, je pensais qu'il était mieux de choisir le type "Integer ???).
Pour la visualisation sur la feuille EXCEL, j'ai choisi une largeur de 1.17 pour les 64 premières colonnes : cela permet de voir les solutions s'afficher intégralement les unes après les autres.
HCD
10 août 2006 à 08:31
Dim T(1 To 8, 1 To 64), A(1 To 64), B(1 To 64), C(1 To 64), D(1 To 64), E(1 To 64) As Integer
Seul E est de type Integer, les autres étant de type Variant => ca ralentit pas mal l'éxécution !
10 août 2006 à 00:52
Revois un peu la présentation de ton code.
Evite de mettre tout ton code sur une seule ligne. (Pour l'initialisation de tes valeurs ca va mais pas pour le reste)
T'as oublié de déclarer pas mal de variable. Ajoute un Option Explicit au début.
Voilà, donc pas tester, ni noté.
Kenji