miércoles, 30 de abril de 2008
Ejercicio 5
En la siguiente imagen tenemos las tablas de semejanzas y también las características (diferencias) para cada una de las técnicas bio-inspiradas.
lunes, 28 de abril de 2008
Ejercicio 4
En el siguiente ejercicio tenemos que hacer un ranking con las 50 palabras en minúscula que más se utilicen en el texto.
El código correspondiente sería:
En cuanto a la línea comentada, la primera no funciona y la explicación parece estar en el siguiente trozo de la documentación de perldoc:
<=> compara numéricamente, por tanto, como nuestros valores lo son, es el correcto. Usando cmp y la longitud no nos sirve, puesto que entiende que 8 es menor que 2 pero mayor que 12. A continuación tenemos las salidas para cada caso:
Usando sort {length($indice{$a})cmp length($indice{$b})}:

Usando sort {$indice{$a} <=> $indice{$b}}:
El código correspondiente sería:
use strict;
use warnings;
use File::Slurp;
@ARGV || die "Uso: $0 <fichero de entrada>\n";
my %indice;
my $text = read_file( $ARGV[0] ) ;
my @palabras=split(" ", $text);
my $contador = 0;
for (@palabras){
if (/[a-záéíóúñ]+/){
$indice{$_} = 0;
}
}
for (@palabras) {
if (/[a-záéíóúñ]+/) {
$indice{$_} =$indice{$_}+1;
}
}
#for (sort {length($indice{$b}) cmp
length($indice{$a})} keys %indice ) {
for (sort {$indice{$b} <=> $indice{$a}}
keys %indice){
$contador++;
if($contador<=50){
print $_, " = ", $indice{$_},"\n";
}
}
En cuanto a la línea comentada, la primera no funciona y la explicación parece estar en el siguiente trozo de la documentación de perldoc:
Equality Operators
Binary "<=>" returns -1, 0, or 1 depending on whether the left argument is numerically less than, equal to, or greater than the right argument.
Binary "cmp" returns -1, 0, or 1 depending on whether the left argument is stringwise less than, equal to, or greater than the right argument.
<=> compara numéricamente, por tanto, como nuestros valores lo son, es el correcto. Usando cmp y la longitud no nos sirve, puesto que entiende que 8 es menor que 2 pero mayor que 12. A continuación tenemos las salidas para cada caso:
Usando sort {length($indice{$a})cmp length($indice{$b})}:
Usando sort {$indice{$a} <=> $indice{$b}}:
miércoles, 23 de abril de 2008
Ejercicio 3
Por finnnnn!!!!
La imagen siguiente es la salida
#!/usr/bin/perl
use strict;
use warnings;
use File::Slurp;
@ARGV || die "Uso: $0 <fichero a partir por trancos>\n";
my $text = read_file( $ARGV[0] ) ;
my @trancos=split("TRANCO", $text);
# $#vector te da el último elemento indexable del array
for (@trancos[1..$#trancos]){
# -x40 multiplica el - por cuarenta, como cadena,
# por tanto, cuarenta - (----- ... --)
print substr($_,0,40), "\n", "-"x40, "\n";
my @parrafo = split("\n\n", $_);
for my $c(@parrafo){
print "<p>", $c, "</p>\n\n";
}
}
La imagen siguiente es la salida
Ejercicio 2
El siguiente ejercicio, cuenta el número de líneas que no están en blanco en un fichero de texto y las calcula para luego guardar ese valor en un fichero de nombre igual al de entrada al programa, pero con la extensión .lc
Así, el programa podría ser:
De hecho, la lectura del fichero de entrada podría hacerse desde la línea de comandos, poniendo el nombre como argumento, y así no tener que abrir ningún fichero de entrada, pero entonces, ¿cómo acceder al nombre de ese fichero? supongo que una de las variables $algo.
Así, el programa podría ser:
my $leyendo = "diablocojuelo.txt";
if ( ! -r $leyendo ) {
die "El fichero $leyendo no es legible\n";
}
open my $fh, "<", $leyendo
or die "No puedo abrir el fichero $leyendo por $!\n";
open my $fh_out, ">", "$leyendo.lc";
$contador=0;
while (<$fh>) {
chop; chop;
$contador++ if $_;
}
print $fh_out $contador;
close $fh;
close $fh_out;
De hecho, la lectura del fichero de entrada podría hacerse desde la línea de comandos, poniendo el nombre como argumento, y así no tener que abrir ningún fichero de entrada, pero entonces, ¿cómo acceder al nombre de ese fichero? supongo que una de las variables $algo.
miércoles, 16 de abril de 2008
Mi primera entrada
Buenas!!!
Esta es la primera ventana abierta al mundo, de información de la ETSIIT en español!!!
(Aparte de servir para el master).
Esta es la primera ventana abierta al mundo, de información de la ETSIIT en español!!!
(Aparte de servir para el master).
Suscribirse a:
Comentarios (Atom)