[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