• Publicidad

Permutación con repetición

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Permutación con repetición

Notapor elinostro » 2011-06-08 17:30 @771

Hola,

Gracias por tomarte el tiempo de redactar tantas cosas interesantes de este magnifico lenguaje. Encontré esto en la web y me registré de inmediato pues esto que escribes es cuasi lo que estoy buscando. Sin embargo, me he hecho un lío haciendo algo tan simple como una permutación con repetición de lo siguiente:



Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #tengo una matriz con nombres
  2. @nombres=(aaron,abel,abelardo)
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


La cual quiero que se concatene con números desde 01 hasta 999999 así:

aaron01
aaron02
..
aaron999999
abel01
abel02
..
abel999999
abelardo01
abelardo02
..
abelardo999999

He intentado así

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2.  
  3. ##################################################
  4. #################Lista de Nombres#################
  5.  
  6. @nombres=("aaron","abel","abelardo");
  7.  
  8. @dia=("01","02","03","04","05","06","07","08","09",10,11 .. 999999);
  9.  
  10. for ($i=0;$i<=9;$i++)
  11. {
  12.         print "$nombres[$i]$dia[$i]\n";
  13. }
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Teniendo en cuenta que por la instrucción dada a la estructura repetitiva "for" concatenará hasta el número "10", (no quiero llenaros la pantalla :oops: ) ... la salida es la siguiente:

elinostro@ubuntu:~# perl /media/CORSAIR/Nomun.pl
aaron01
abel02
abelardo03
04
05
06
07
08
09
10

¡Ups!, el resultado no es el esperado por obvias razones, pero quizás con tu eminencia, logre tener una luz acerca del objetivo :)

Saludos
elinostro
Perlero nuevo
Perlero nuevo
 
Mensajes: 2
Registrado: 2011-06-08 16:00 @708

Publicidad

Re: bioinfo: Generar las posibles combinaciones de n nucleótidos

Notapor explorer » 2011-06-09 01:42 @112

Bienvenido a los foros de Perl en español, elinostro.

Debes realizar un bucle for() anidado por fuera del que tienes.

Tal como está ahora, estás recorriendo los dos array a la vez, y no es así.

El bucle más exterior debe recorrer el primer array, y por cada valor de este array, hacer todo un bucle por los números que le queremos añadir.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: bioinfo: Generar las posibles combinaciones de n nucleótidos

Notapor elinostro » 2011-06-10 16:53 @745

Hola,

Gracias por tu atenta respuesta, es de admirar cómo enseñas a pescar sin dar el pez. Pues bien, luego de haber luchado contra mis rudimentos en Perl, logré comprender perfectamente a lo que te referías.

Lo logré, mira:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2.  
  3. #############################################
  4. #################Lista de Nombres#################
  5.  
  6. @nombres = ( "aaron", "abel", "abelardo" );
  7.  
  8. for ( $i = 0; $i <= 9; $i++ )
  9.  
  10. {
  11.     @dia = (
  12.         "01", "02", "03", "04", "05", "06",
  13.         "07", "08", "09", 10,   11 .. 999999
  14.     );
  15.  
  16.     for ( $a = 0; $a <= 9; $a++ ) {
  17.         print "$nombres[$i]$dia[$a]\n";
  18.     }
  19. }
  20.  
  21. ######end######
  22.  
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Ahora se imprime lo siguiente:

aaron01
aaron02
aaron03
aaron04
aaron05
aaron06
aaron07
aaron08
aaron09
aaron10
abel01
abel02
abel03
abel04
abel05
abel06
abel07
abel08
abel09
abel10
abelardo01
abelardo02
abelardo03
abelardo04
abelardo05
abelardo06
abelardo07
abelardo08
abelardo09
abelardo10

Muchísimas gracias por permitirme hacer parte de esta comunidad, y haberme ayudado tanto.

Saludos desde Colombia:

Sebastián. :-)
elinostro
Perlero nuevo
Perlero nuevo
 
Mensajes: 2
Registrado: 2011-06-08 16:00 @708

Re: bioinfo: Generar las posibles combinaciones de n nucleótidos

Notapor explorer » 2011-06-11 02:47 @157

Enhorabuena, Sebastián.

Cuando domines un poco más Perl, podrás hacer más cosas, incluso como está:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2. use common::sense;
  3.  
  4. my $último_día = 100;
  5.  
  6. my $primer_día = sprintf "%.*d1", length($último_día) - 1;    # "000...01"
  7.  
  8. map { say } "$_$primer_día" .. "$_$último_día"  for  qw(
  9.         aaron
  10.         abel
  11.         abelardo
  12. );
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados

cron