kimmelf2
Messages postés267Date d'inscriptionlundi 22 septembre 2003StatutMembreDernière intervention27 novembre 2005 8 nov. 2003 à 02:13
faut pas lire plusieurs sources en meme temps !!!
;-D
garslouche
Messages postés583Date d'inscriptionmardi 26 novembre 2002StatutMembreDernière intervention29 mai 20151 8 nov. 2003 à 01:17
Eh mais j'avais posté un message d'excuses qd je m'étais rendu compte de mon erreur...où qu'il est passé ???
Bon bah encore désolé
cs_Kirua
Messages postés3006Date d'inscriptiondimanche 14 avril 2002StatutMembreDernière intervention31 décembre 2008 7 nov. 2003 à 23:23
lol, c pas grave garlouche, l'algo de génétique c'est de l'autre côté, on t'en veut pas ;-)
garslouche
Messages postés583Date d'inscriptionmardi 26 novembre 2002StatutMembreDernière intervention29 mai 20151 7 nov. 2003 à 09:53
Ca fait qq temps que je n'y ai plus touché mais pour autant que je me souvienne les algo génétiques utilisent davantage de notions normalement. Ici tu n'utilises que les mutations, mais il y avait une histroire de cross-bidule et de je ne sais quoi encore. Il me semble qu'il y a avait 3 types d' <<erreurs>> possibles. De plus je ne vois pas le taux de mutation ds ton prog.
Sinon je trouve ça un peu bizarre que le mutations ne soient pas utilisées pendant la "procréation" (càd dans l'opérateur *)
Sinon j'ai pas pu testé bicoz j'ai pas un linux sous la main mais d'après la capture d'écran ça a l'air assez efficace.
Sinon pour Kirua : la force brute est toujours la + mauvaise solution!!! (sauf pour trouver un mot de passe....). Et même si dans un cas particulier ça marche mieux (par exemple quand il y a peu de villes à traverser) il ne faut pas en tenir compte car la vitesse des algos se calcule généralement dans le cas des très grand ensembles.
Sinon c'est bien codé mais pas assez commenté...8/10
kimmelf2
Messages postés267Date d'inscriptionlundi 22 septembre 2003StatutMembreDernière intervention27 novembre 2005 7 nov. 2003 à 02:21
pour info, mon algo fonctionnais nickel et rapidement y'a 10 ans sur un MO6 avec un vieux basic 1.0 donc ca devaris pas poser de pb de perf maintenant ! ;-)
cs_Kirua
Messages postés3006Date d'inscriptiondimanche 14 avril 2002StatutMembreDernière intervention31 décembre 2008 6 nov. 2003 à 18:32
pour un paramètre par défaut, pas la peine d'utiliser les macro du préprocesseur comme tu l'as fait
#define _itoa(a,b,c) __itoa(a,b,c,32)
il te suffit de faire ceci dans la déclaration de ta fonction:
int __itoa(int num,char *result,int base,int nbrNum = 32)
tu vois, le dernier paramètre, si tu n'en passes pas lors de l'appel de la fonction, 32 sera utilisé.
une autre possibilité, mais qui sied moins ds ce cas-ci, aurait été la surcharge (définir plusieurs prototypes de fonctions de même nom, avec un nombre de paramètres différents, l'une appelant l'autre)
kimmelf2
Messages postés267Date d'inscriptionlundi 22 septembre 2003StatutMembreDernière intervention27 novembre 2005 6 nov. 2003 à 03:37
tant que (x>0)
y=x
x=(int)y/base
reste=y-x*base
chaine[cpt]=HEX[reste]
cpt++
fin tant que
chaine[cpt]=0 // caractere de fin de chaine a pas oublier
inverse le sens de chaine
exemple : convertir 38 vers la base 3
x=38, base=3, cpt=0
-1er passage-
y=x=38
x=(int)38/3 = (int)12.33333 = 12
r=38-12*3 = 38-36 = 2
chaine[0]='2' => chaine="2"
cpt++ => cpt=1
chaine[4]=0 => chaine = "2011 "
on retourne chaine : chaine="1102 " qui est bien la connv en base 3 de 38 :
2*3^0 + 0*3^1 + 1*3^2 + 1*3^3 2*1 + 0*3 + 1*9 + 1*27 2+9+27 = 38
CQFD
cs_Xs
Messages postés368Date d'inscriptionmercredi 14 novembre 2001StatutMembreDernière intervention 1 septembre 2008 4 nov. 2003 à 23:30
Ca m'a l'air bien lent comme fct.
Perso, je ne l'ai jamais essayé, mais je pense que ma méthode est bcp plus rapide mais marche que sous win.
Je posterai sa demain.
8 nov. 2003 à 02:13
;-D
8 nov. 2003 à 01:17
Bon bah encore désolé
7 nov. 2003 à 23:23
7 nov. 2003 à 09:53
Sinon je trouve ça un peu bizarre que le mutations ne soient pas utilisées pendant la "procréation" (càd dans l'opérateur *)
Sinon j'ai pas pu testé bicoz j'ai pas un linux sous la main mais d'après la capture d'écran ça a l'air assez efficace.
Sinon pour Kirua : la force brute est toujours la + mauvaise solution!!! (sauf pour trouver un mot de passe....). Et même si dans un cas particulier ça marche mieux (par exemple quand il y a peu de villes à traverser) il ne faut pas en tenir compte car la vitesse des algos se calcule généralement dans le cas des très grand ensembles.
Sinon c'est bien codé mais pas assez commenté...8/10
7 nov. 2003 à 02:21
6 nov. 2003 à 18:32
#define _itoa(a,b,c) __itoa(a,b,c,32)
il te suffit de faire ceci dans la déclaration de ta fonction:
int __itoa(int num,char *result,int base,int nbrNum = 32)
tu vois, le dernier paramètre, si tu n'en passes pas lors de l'appel de la fonction, 32 sera utilisé.
une autre possibilité, mais qui sied moins ds ce cas-ci, aurait été la surcharge (définir plusieurs prototypes de fonctions de même nom, avec un nombre de paramètres différents, l'une appelant l'autre)
6 nov. 2003 à 03:37
char HEX[] = { '0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
cpt=0;
x=valeur a convertir
tant que (x>0)
y=x
x=(int)y/base
reste=y-x*base
chaine[cpt]=HEX[reste]
cpt++
fin tant que
chaine[cpt]=0 // caractere de fin de chaine a pas oublier
inverse le sens de chaine
exemple : convertir 38 vers la base 3
x=38, base=3, cpt=0
-1er passage-
y=x=38
x=(int)38/3 = (int)12.33333 = 12
r=38-12*3 = 38-36 = 2
chaine[0]='2' => chaine="2"
cpt++ => cpt=1
-2e-
y=x => 12
x=(int)12/3=4
r=12-4*3=0
chaine[1]='0' => chaine="20"
cpt=2
-3e-
y=x=>4
x=(int)4/3=1
r=4-1*3=1
chaine[2]='1' => chaine="201"
cpt=3
-4e-
y=x=>1
x=(int)1/3=0
r=1-0*3=1
chaine[3]='1'=>chaine="2011"
cpt=4
------x=0 donc on quitte la boucle-------
chaine[4]=0 => chaine = "2011 "
on retourne chaine : chaine="1102 " qui est bien la connv en base 3 de 38 :
2*3^0 + 0*3^1 + 1*3^2 + 1*3^3 2*1 + 0*3 + 1*9 + 1*27
2+9+27 = 38
CQFD
4 nov. 2003 à 23:30
Perso, je ne l'ai jamais essayé, mais je pense que ma méthode est bcp plus rapide mais marche que sous win.
Je posterai sa demain.