[Ejercicios] Perl

Iniciado por Juan, Noviembre 30, 2014, 05:07:46 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Noviembre 30, 2014, 05:07:46 PM Ultima modificación: Diciembre 05, 2014, 06:25:40 PM por Juan
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.

Código: php
Introduce la altura del triangulo: 5
     *
    **
   ***
  ****
*****


¡Animaros!

Diciembre 01, 2014, 07:48:12 PM #1 Ultima modificación: Diciembre 02, 2014, 03:26:18 PM por rollth
Yo me animo, me lie un poco la cabeza, pero aqui esta.

Código: c
// 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.

Código: c
// 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");
  }
}
RollthBuen hacker mejor No tienes permitido ver los links. Registrarse o Entrar a mi cuenta/No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Pero, se suponía que era para hacerlo en perl...

No se donde dices eso, de todas formas no se programar en perl.
RollthBuen hacker mejor 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 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..
Ser mejor cada día es mi meta

=LKI=

Diciembre 03, 2014, 08:14:24 PM #5 Ultima modificación: Diciembre 03, 2014, 08:16:51 PM por Once
Código: perl
my $hasta;

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

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


Saludos!







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 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.
RollthBuen hacker mejor No tienes permitido ver los links. Registrarse o Entrar a mi cuenta/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
for my $i (1..$hasta)


Que queda mas simple.

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
for my $i (1..$hasta)


Que queda mas simple.

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

PD: ¿Habrán más ejercicios?

Saludos!







No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Once, pon tú otro si quieres en este mismo hilo, o en otro.

Ok, entonces completar la piramide anterior

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

Saludos!







No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Código: perl

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


Código: php
x@x:~/Escritorio$ perl piramide.pl
Tamaño de la piramide: 7
      *
     ***
    *****
   *******
  *********
***********
*************

Sip, pon otro.

Saludos!







No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Diciembre 05, 2014, 06:58:31 AM #13 Ultima modificación: Diciembre 05, 2014, 07:00:09 AM por Juan
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

Código: perl
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!







No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Esta es la mía  ;D

Código: perl
#!/usr/bin/perl

my $DNA = "ACGGGAGGACGGGAAAATTACTACGGCATTAGC";

$DNA =~ tr/ATCG/TAGC/;

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


No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Esta es la mía  ;D

Código: perl
#!/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!







No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Es lo que en perl se conoce comoNo tienes permitido ver los links. Registrarse o Entrar a mi cuenta.

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ú  :)

Aquí tienes mi solución.

Código: perl
#!/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;

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Es lo que en perl se conoce comoNo tienes permitido ver los links. Registrarse o Entrar a mi cuenta.

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!







No tienes permitido ver los links. Registrarse o Entrar a mi cuenta