Underc0de

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
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
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
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
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
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
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
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
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
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
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