Underc0de - La Casa de los Informáticos

Programación Scripting => Perl => Mensaje iniciado por: Juan en Noviembre 30, 2014, 05:07:46 PM

Título: [Ejercicios] Perl
Publicado por: Juan en Noviembre 30, 2014, 05:07:46 PM
Bueno pues, para darle más vida a esta sección, se me ha ocurrido hacer una serie de ejercicios. El primero sería hacer una pirámide en la que pides al usuario la altura de dicha pirámide y la dibujas, ej:

Introduciendo 5 en altura.

Introduce la altura del triangulo: 5
     *
    **
   ***
  ****
*****


¡Animaros!
Título: Re:Ejercicio: piramide
Publicado por: rollth en Diciembre 01, 2014, 07:48:12 PM
Yo me animo, me lie un poco la cabeza, pero aqui esta.

// Programa "piramide" //

#include <stdio.h>

int main() {
  int altura;
  printf ("Introduce la altura del triangulo: ");
  scanf ("%d",&altura);
  for (int i=1; i <= altura; i++){
    for (int a=1; a <= altura-i; a++){
      printf(" ");
    }
    for (int c=1; c <= i; c++){
      printf("*");
    }
    printf("\n");
  }
}


EDITO

De paso dejo esto que escribe el contorno de un triangulo.

// Este programa dibuja el contorno de un triangulo de 'x' altura //

#include <stdio.h>

int main(){
  int altura;
  printf("Altura del triangulo: ");
  scanf("%d",&altura);
  for (int i = 1; i <= altura; i++){
    if (i == 1){ // Hace la primera linea.
      for (int a = 1; a <= altura-i ; a++){
        printf(" ");
      }
      printf("*");
    }
    else if (i != 1 && i != altura){ // Hace las lineas interioes
      for (int a = 1; a <= altura-i; a++){
        printf(" ");
      }
      printf("*");
      for (int a = 1; a <= i*2-3; a++){
        printf(" ");
      }
      printf("*");
    }
    else{ // Hace la ultima linea
      for (int a=1; a <= altura*2-1; a++){
        printf("*");
      }
    }
    printf("\n");
  }
}
Título: Re:Ejercicio: piramide
Publicado por: Juan en Diciembre 02, 2014, 03:50:29 PM
Pero, se suponía que era para hacerlo en perl...
Título: Re:Ejercicio: piramide
Publicado por: rollth en Diciembre 02, 2014, 07:26:29 PM
No se donde dices eso, de todas formas no se programar en perl.
Título: Re:Ejercicio: piramide
Publicado por: LKI en Diciembre 03, 2014, 06:28:36 PM
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
No se donde dices eso, de todas formas no se programar en perl.

La sección es de scripting específicamente de desarrollo en perl. Y Juan aclaro que para revivir un poco esta sección iba a proponer una serie de desafíos, se suponía que fueran acerca de este lenguaje..
Título: Re:Ejercicio: piramide
Publicado por: Once en Diciembre 03, 2014, 08:14:24 PM
Código (perl) [Seleccionar]
my $hasta;

print "Tamano de la piramide: ";
$hasta = <>;

for ($i=1; $i<=$hasta; $i++) {
    print " " x ($hasta - $i) . "*" x $i . "\r\n";
}


Saludos!
Título: Re:Ejercicio: piramide
Publicado por: rollth en Diciembre 04, 2014, 09:52:29 AM
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
No se donde dices eso, de todas formas no se programar en perl.

La sección es de scripting específicamente de desarrollo en perl. Y Juan aclaro que para revivir un poco esta sección iba a proponer una serie de desafíos, se suponía que fueran acerca de este lenguaje..

Cierto, no me fije que estaba en la subseccion de Perl.
Título: Re:Ejercicio: piramide
Publicado por: Juan en Diciembre 04, 2014, 02:33:31 PM
Muy buena solución Once!!! aprovechando las características de perl :)

El bucle podría ser así también:

Código (perl) [Seleccionar]
for my $i (1..$hasta)

Que queda mas simple.
Título: Re:Ejercicio: piramide
Publicado por: Once en Diciembre 04, 2014, 04:26:26 PM
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
Muy buena solución Once!!! aprovechando las características de perl :)

El bucle podría ser así también:

Código (perl) [Seleccionar]
for my $i (1..$hasta)

Que queda mas simple.

Tienes razón, no conocía esa sintaxis.

PD: ¿Habrán más ejercicios?

Saludos!
Título: Re:Ejercicio: piramide
Publicado por: Juan en Diciembre 04, 2014, 05:08:38 PM
Once, pon tú otro si quieres en este mismo hilo, o en otro.
Título: Re:Ejercicio: piramide
Publicado por: Once en Diciembre 04, 2014, 05:25:16 PM
Ok, entonces completar la piramide anterior

Citar
Tamano: 5
    *
   ***
  *****
*******
*********

Saludos!
Título: Re:Ejercicio: piramide
Publicado por: Juan en Diciembre 04, 2014, 06:15:08 PM
Código (perl) [Seleccionar]

#!/usr/bin/perl
print "Tamaño de la piramide: " and my $h = <>;
     
for (1..$h)
{
    print " " x ($h - $_) . "*" x (($_*2)-1) . "\n";
}


x@x:~/Escritorio$ perl piramide.pl
Tamaño de la piramide: 7
      *
     ***
    *****
   *******
  *********
***********
*************
Título: Re:Ejercicio: piramide
Publicado por: Once en Diciembre 04, 2014, 06:25:14 PM
Sip, pon otro.

Saludos!
Título: Re:Ejercicio: piramide
Publicado por: Juan en Diciembre 05, 2014, 06:58:31 AM
CitarEl DNA es una hélice formada por dos cadenas, una complementaria de la otra, que avanzan en sentidos opuestos:

                5'    ACTCAGA    3'    à
        ß     3'    TGAGTCT    5'

En la cadena complementaria, las sustituciones de nucleótidos son las siguientes:
A    à    T
T    à    A
C    à    G
G    à    C

La dirección en la que siempre de deben dar las secuencias (por consenso) es 5' à 3'.

Escribe un programa que, dada una secuencia de DNA, calcule su complementaria.

    Secuencia de DNA: ACGGGAGGACGGGAAAATTACTACGGCATTAGC


Lo que está en rojo  ;D
Título: Re:Ejercicio: piramide
Publicado por: Once en Diciembre 05, 2014, 01:16:26 PM
Código (perl) [Seleccionar]
my $cadena = "ACGGGAGGACGGGAAAATTACTACGGCATTAGC";
my %tabla = ("A"=>"T", "T"=>"A", "C"=>"G", "G"=>"C");
my $complementario;


foreach (reverse(split("", $cadena))) {
    $complementario .=  $tabla{$_};
}

print $cadena . "\r\n";
print $complementario;



Saludos!
Título: Re:Ejercicio: piramide
Publicado por: Juan en Diciembre 05, 2014, 04:06:30 PM
Esta es la mía  ;D

Código (perl) [Seleccionar]
#!/usr/bin/perl

my $DNA = "ACGGGAGGACGGGAAAATTACTACGGCATTAGC";

$DNA =~ tr/ATCG/TAGC/;

print reverse($DNA) . "\n";

Título: Re:Ejercicio: piramide
Publicado por: Once en Diciembre 05, 2014, 04:47:26 PM
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
Esta es la mía  ;D

Código (perl) [Seleccionar]
#!/usr/bin/perl

my $DNA = "ACGGGAGGACGGGAAAATTACTACGGCATTAGC";

$DNA =~ tr/ATCG/TAGC/;

print reverse($DNA) . "\n";



Mi código es muy "pytónico"  :P
No entiendo (apenas estoy prendiendo Perl) ¿Son expresiones regulares?

PD: Para continuar, un script que le pida al usurio un número y le diga si el número es perfecto o no.

Saludos!
Título: Re:Ejercicio: piramide
Publicado por: Juan en Diciembre 05, 2014, 06:08:09 PM
Es lo que en perl se conoce como trasliteración (http://perldoc.perl.org/functions/tr.html).

Es decir, remplaza los caracteres que encuentra en el primer parámetro, con los que encuentra en el segundo parámetro, en su mismo orden.

Voy a cenar y hago el ejercicio que has propuesto tú  :)
Título: Re:[Ejercicios] Perl
Publicado por: Juan en Diciembre 05, 2014, 06:51:19 PM
Aquí tienes mi solución.

Código (perl) [Seleccionar]
#!/usr/bin/perl

my $num = <STDIN>;
my $total = 0;

for (1..$num)
{
    $total += $_ if (($num % $_) == 0 and $num != $_)
}

print "El numero es perfecto\n" if $total == $num;
Título: Re:Ejercicio: piramide
Publicado por: Once en Diciembre 05, 2014, 10:18:15 PM
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
Es lo que en perl se conoce como trasliteración (http://perldoc.perl.org/functions/tr.html).

Es decir, remplaza los caracteres que encuentra en el primer parámetro, con los que encuentra en el segundo parámetro, en su mismo orden.

Voy a cenar y hago el ejercicio que has propuesto tú  :)

Gracias.

Pon otro.

Saludos!
Título: Re:[Ejercicios] Perl
Publicado por: Juan en Diciembre 07, 2014, 02:22:12 PM
Ahí va:

CitarHacer un programa con el que, a partir de un fichero del siguiente tipo:

     12345:Lopez,Juan:JL
     58694:Martinez,Luis:LM
     36495:Abad,Ramon:RA
     93764:Garcia,Jose:JG

obtengamos una salida del siguiente tipo:

     ID     Iniciales    Nombre
    12345       JL      Juan Lopez
    58694       LM      Luis Martinez
    36495       RA      Ramon Abad
    93764       JG      Jose Garcia