cs_PaDa
Messages postés1802Date d'inscriptionmardi 15 juillet 2003StatutMembreDernière intervention22 septembre 2009
-
27 août 2004 à 01:48
cs_Huitre
Messages postés290Date d'inscriptionmardi 21 janvier 2003StatutMembreDernière intervention29 février 2008
-
30 août 2004 à 21:38
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
cs_Huitre
Messages postés290Date d'inscriptionmardi 21 janvier 2003StatutMembreDernière intervention29 février 2008 30 août 2004 à 21:38
Ca change de $read ^^
cs_PaDa
Messages postés1802Date d'inscriptionmardi 15 juillet 2003StatutMembreDernière intervention22 septembre 20095 30 août 2004 à 18:44
en file handling , 3secs pour un fichier de 20000 lignes :) c'est correct non?
cs_HeXoR
Messages postés165Date d'inscriptionmercredi 29 janvier 2003StatutMembreDernière intervention15 avril 2010 30 août 2004 à 17:32
c le genre de truc qui doit ramer mechant avec un gros txt :/
_VeSpArO_
Messages postés21Date d'inscriptionjeudi 8 juillet 2004StatutMembreDernière intervention30 août 2004 27 août 2004 à 23:41
Ok je vais reprendre le code dans les jours qui viennent :) merci PaDa je vais prendre en compte ce que tu m'as dis!
cs_tofu
Messages postés1726Date d'inscriptionvendredi 12 septembre 2003StatutMembreDernière intervention13 juin 20091 27 août 2004 à 13:14
je maintiens que ça aurait été plus simple à faire avec le file handling .
cs_ReMi34
Messages postés1025Date d'inscriptionvendredi 29 août 2003StatutMembreDernière intervention28 mars 20052 27 août 2004 à 10:23
while (%o: <= a:) {
T'as oublié le % avant le a: :/
cs_PaDa
Messages postés1802Date d'inscriptionmardi 15 juillet 2003StatutMembreDernière intervention22 septembre 20095 27 août 2004 à 02:28
je retire la boucle qui sert a rien :
%o: 0, %a: 1 puis while (%o: <= a:) et a chaque tour de boucle tu incrémentes %a: ... si yavait pas d'erreur de syntaxe avant -> freeze (1,2,3,4,...,10millions sont supérieurs a 0...)
vala le code de départ que je t'avais proposé sur le forum à epsilon près :
Alias replacetxt {
var %x 0, %i 1 , %imax $lines($1) , %2 = $+(/,$2,/g,$prop) , %L
while (%i <= %imax) {
inc %x $regsub($read($1,%i),%2,$3,%L)
write -l $+ %i $1 %L
inc %i
}
return %x
}
voici une version file handling certainement très optimisable , utilisant deux fichiers :
Alias replacetxt {
var %x 0, %2 = $+(/,$2,/g,$prop) , %L , %i 1 , %m $lines($1)
.fopen txt1 $1
.fopen -no txt2 tmp- $+ $1
while %i <= %m {
inc %x $regsub($fread(txt1),%2,$3,%L)
.fwrite -n txt2 %L
inc %i
}
.fclose txt?
.copy -o tmp- $+ $1 $1
.remove tmp- $+ $1
return %x
}
(tofu avait posté un truc aussi , cf le forum , du file handling mais en bien plus court et propre je crois)
reprends ton code si tu peux , je suis impatient de voir une version corrigée en hashtables :)
cs_PaDa
Messages postés1802Date d'inscriptionmardi 15 juillet 2003StatutMembreDernière intervention22 septembre 20095 27 août 2004 à 01:48
$regsub(%H,$3,%H)
> * Invalid parameters: $regsub (line *,******.mrc)
syntaxe : $regsub(ce dans quoi on cherche, mask , remplacement , var ) donc il manque un argument
Sinon c'est ptet astucieux d'utiliser les hashtables (j'ai pas pigé tout le remote la encore) mais je pense que tu t'y prends mal :
avec $hfind tu vas trouver la n-ième item matchant un text et ensuite tu réécris par dessus la N-ième item tout court (qui n'est pas forcément la même) donc bon ... (d'ailleurs il manque certainement un argument a $hfind)
sinon dans le principe , il est tard mais voila ce que je pige pas : tu fais un hmake pour ta table , ok . elle est vide . tu fais un $hfind ensuite (enfin si ya le bon nombre d'arguement mais je doute fortement) , la table est toujours vide . et ensuite tu sauves la table (toujours vide) dans le fichier de départ ... en admettant que celle ci ne soit pas vide tu la sauves en binaire (switch -b) c'est du vice lol :p
enfin la boucle est inutile puisqu'il n'y a pas plusieurs tours
reprends un ti peu ton code , cette facon de faire peut etre très intéressante je pense mais la c'est pas fonctionnel ...ou chu endormi ... :(
30 août 2004 à 21:38
30 août 2004 à 18:44
30 août 2004 à 17:32
27 août 2004 à 23:41
27 août 2004 à 13:14
27 août 2004 à 10:23
T'as oublié le % avant le a: :/
27 août 2004 à 02:28
%o: 0, %a: 1 puis while (%o: <= a:) et a chaque tour de boucle tu incrémentes %a: ... si yavait pas d'erreur de syntaxe avant -> freeze (1,2,3,4,...,10millions sont supérieurs a 0...)
vala le code de départ que je t'avais proposé sur le forum à epsilon près :
Alias replacetxt {
var %x 0, %i 1 , %imax $lines($1) , %2 = $+(/,$2,/g,$prop) , %L
while (%i <= %imax) {
inc %x $regsub($read($1,%i),%2,$3,%L)
write -l $+ %i $1 %L
inc %i
}
return %x
}
voici une version file handling certainement très optimisable , utilisant deux fichiers :
Alias replacetxt {
var %x 0, %2 = $+(/,$2,/g,$prop) , %L , %i 1 , %m $lines($1)
.fopen txt1 $1
.fopen -no txt2 tmp- $+ $1
while %i <= %m {
inc %x $regsub($fread(txt1),%2,$3,%L)
.fwrite -n txt2 %L
inc %i
}
.fclose txt?
.copy -o tmp- $+ $1 $1
.remove tmp- $+ $1
return %x
}
(tofu avait posté un truc aussi , cf le forum , du file handling mais en bien plus court et propre je crois)
reprends ton code si tu peux , je suis impatient de voir une version corrigée en hashtables :)
27 août 2004 à 01:48
> * Invalid parameters: $regsub (line *,******.mrc)
syntaxe : $regsub(ce dans quoi on cherche, mask , remplacement , var ) donc il manque un argument
Sinon c'est ptet astucieux d'utiliser les hashtables (j'ai pas pigé tout le remote la encore) mais je pense que tu t'y prends mal :
avec $hfind tu vas trouver la n-ième item matchant un text et ensuite tu réécris par dessus la N-ième item tout court (qui n'est pas forcément la même) donc bon ... (d'ailleurs il manque certainement un argument a $hfind)
sinon dans le principe , il est tard mais voila ce que je pige pas : tu fais un hmake pour ta table , ok . elle est vide . tu fais un $hfind ensuite (enfin si ya le bon nombre d'arguement mais je doute fortement) , la table est toujours vide . et ensuite tu sauves la table (toujours vide) dans le fichier de départ ... en admettant que celle ci ne soit pas vide tu la sauves en binaire (switch -b) c'est du vice lol :p
enfin la boucle est inutile puisqu'il n'y a pas plusieurs tours
reprends un ti peu ton code , cette facon de faire peut etre très intéressante je pense mais la c'est pas fonctionnel ...ou chu endormi ... :(