• Publicidad

Llenar arreglo con ceros y unos

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

Llenar arreglo con ceros y unos

Notapor panterozo » 2010-05-14 09:47 @449

Tengo un arreglo de dimensión 6, el cual deseo llenar con ceros y unos, en todas sus posibles soluciones.

Debían ser 64 en total, ya que 2*2*2*2*2*2 = 64;

Me he pasado todo el día creando un algoritmo que haga esto, pero mi cabeza no encuentra la solución :s

¿Alguna idea?

Aquí mi lista, pero solo con 60, y repetidos algunos

111110
011110
101110
110110
111010
111100
111101
011101
101101
110101
111001
111101
111011
011011
101011
110011
111001
111010
110111
010111
100111
110011
110101
110110
101111
001111
100111
101011
101101
101110
000001
100001
010001
001001
000101
000011
000010
100010
010010
001010
000110
000010
000100
100100
010100
001100
000110
000101
001000
101000
011000
001100
001010
001001
010000
110000
011000
010100
010010
010001
000000
111111

salutes ;)
panterozo
Perlero nuevo
Perlero nuevo
 
Mensajes: 160
Registrado: 2010-01-26 08:36 @400

Publicidad

Re: llenar arreglo con ceros y unos

Notapor panterozo » 2010-05-14 09:56 @455

000000
000001
000010
000011
000100
000101
000110
000111
001000
001001
001010
001011
001100
001101
001110
001111
010000
010001
010010
010011
010100
010101
010110
010111
011000
011001
011010
011011
011100
011101
011110
011111
111111
111110
111101
111100
111011
111010
111001
111000
110111
110110
110101
110100
110011
110010
110001
110000
101111
101110
101101
101100
101011
101010
101001
101000
100111
100110
100101
100100
100011
100010
100001
100000



Resuelto :S
panterozo
Perlero nuevo
Perlero nuevo
 
Mensajes: 160
Registrado: 2010-01-26 08:36 @400

Re: Llenar arreglo con ceros y unos

Notapor explorer » 2010-05-14 11:45 @531

Hubiera sido más divertido si hubieras puesto la solución, pero bueno, ahí va una mía:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
for my $i ( 0 .. (2 ** 6  - 1) ) {
    printf "%06b\n", $i;
}
Coloreado en 0.003 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

Re: Llenar arreglo con ceros y unos

Notapor creating021 » 2010-05-14 15:53 @703

Mi versión (creo que mucho más lenta que la de explorer):
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl
use strict;
sub dec2bin {
    return ( unpack("B*", pack("c", shift)) );
}
for ( 0..63 ) {
    print (substr dec2bin($_), -6);
    print "\n";
}
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Está basado en un ejemplo del Cookbook :)
Expect the worst, is it the least you can do?
Avatar de Usuario
creating021
Perlero frecuente
Perlero frecuente
 
Mensajes: 595
Registrado: 2006-02-23 16:17 @720
Ubicación: Frente al monitor

Re: Llenar arreglo con ceros y unos

Notapor panterozo » 2010-05-26 08:42 @404

¡Ja,ja,ja!... nunca pensé que se podía realizar tan fácil :P

Me la pasé toda una mañana para resolverlo :O

No creo que valga la pena colocar mi código en este hilo.

Salutes y gracias ;)
panterozo
Perlero nuevo
Perlero nuevo
 
Mensajes: 160
Registrado: 2010-01-26 08:36 @400

Re: Llenar arreglo con ceros y unos

Notapor explorer » 2010-05-26 11:34 @524

Es que una cosa es encontrar la solución más corta y otra es querer hacer un algoritmo que haga la misma función.

De lo primero, lo resuelves conociendo un poco el lenguaje, pero del segundo, aprendes algoritmia, lo cual es siempre mucho mejor, a que te lo den todo hecho... es todo un desafío...

Aquí dejo mi solución (una de las muchas posibles), dejando al lector la explicación de su funcionamiento.
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2. use strict;
  3.  
  4. my $nbits = 6;
  5.  
  6. my @bits = ('0') x $nbits;
  7.  
  8. for (1 .. 2**$nbits) {
  9.  
  10.     print join q[], reverse @bits;
  11.     print "\n";
  12.  
  13.     for my $i (0 .. $#bits) {
  14.  
  15.         last if ++$bits[$i] == 1;
  16.  
  17.         $bits[$i] = 0;
  18.     }
  19. }
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 2 invitados

cron