Sharanbr wrote: > On Oct 19, 6:38 am, [EMAIL PROTECTED] (Sisyphus) wrote: >> On Oct 17, 3:04 am, [EMAIL PROTECTED] (Sharan Basappa) wrote: >>> >>> #!/usr/bin/perl >>> use warnings; >>> use Algorithm::Permute; >>> my @array = (1..4); >>> Algorithm::Permute::permute { print "@array\n" } @array; >> >> use warnings; >> use strict; >> use Algorithm::Permute; >> >> my @array = (1..9); >> my $p = new Algorithm::Permute([EMAIL PROTECTED]); >> >> # print out the first 20 permutations of @array, >> # assigning each permutation to @new, and >> # printing it out: >> for(1..20) { >> my @new = $p->next; >> print "@new\n"; >> >> } > > I have modified the code a little bit to suit my requirements. But > still the code does not seem to work i.e. > the final print of @x does not display any value. However, I change > the code foreach (@array) to for (1..) > the way you have coded, it works fine. My requirement is to put all > the permutations into a new array, > not just (1..20) > > I have another basic doubt. After permute is called with @array > argument, does it now contain > new permutations or still (1..4). > > #!/usr/bin/perl > use warnings; > use Algorithm::Permute; > > my @array = (1..4); > my $p = new Algorithm::Permute([EMAIL PROTECTED]); > foreach (@array) > { > my @x = $p->next; > print "@x \n"; > }
You shouldn't pass a real array to the 'new' method as it destroys the array. It's bad but there it is, and the documentation does show it being called with an anonymous array. I'm not sure what you mean by 'put all the permutations into a new array', as each permutation is held in an array and I'm guessing that you don't know about arrays of arrays? The program I've written below stores each permutation as a single string with spaces between the elements. If you really do want a array of arrays instead of an array of strings then it's very obvious how to modify it to do that. HTH, Rob use strict; use warnings; use Algorithm::Permute; my $p = Algorithm::Permute->new([1 .. 4]); my @permutations; while (my @array = $p->next) { push @permutations, "@array"; } print "$_\n" foreach @permutations; -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] http://learn.perl.org/