[solucion] [golf] [caracas-pm] Caracas Perl Quiz #1
Jose Rey
jrey at linuxsis.net
Sat Feb 12 07:08:42 PST 2005
Ya que los expertos se manifiestan, se me antoja un partidito de golf :-9
--------------------------------------------
#!/usr/bin/perl -w
while(<>) {
chomp; $_=lc; $w = $_;
tr {abcáàâäçdeféèêëghiíìîïjklmnoñoóòôöpqrstuvúùûüwxyz}
{2222222233333334444444555666666666777788888889999};
$h{$_}{$w} = undef;
}
for ( values %h ) {
@r = sort keys %$_;
print join(", ", @r), "\n" if @r > 1;
}
--------------------------------------------
Uso:
$ perl equiv.pl /ruta/al/dic01 /ruta/al/dic02 ...
ó
$perl equiv.pl < dic.dat
Salida:
Cada linea de la salida es una clase de equivalencia con al menos 2
palabras (todas las palabras son el mismo número).
Problemas:
Si hay muchas palabras necesita mucha RAM !!!!!!!, una versión más
comprensible, rápida y compacta, pero que no detecta palabras
duplicadas se muestra a continuación:
--------------------------------------------
#!/usr/bin/perl -w
while(<>) {
chomp; $_=lc; $w = $_;
tr {abcáàâäçdeféèêëghiíìîïjklmnoñoóòôöpqrstuvúùûüwxyz}
{2222222233333334444444555666666666777788888889999};
push @{$h{$_}}, $w;
}
for ( values %h ) {
print join(", ", @$_), "\n" if @$_ > 1;
}
--------------------------------------------
Saludos
Jose Luis Rey
Cesar Mendoza wrote:
>Hola,
>
>Aquí les va mi solución al quiz.
>
>
More information about the caracas-pm
mailing list