Your skill will accomplishwhat the force of many cannot PerlMonks

### Re^2: Generate all unique combinations of 1 and 0 using specified length of "0"-string and count of 1's

by LanX (Sage)
 on Sep 19, 2020 at 15:38 UTC Need Help??

> so you need recursion (or fake it).

so here a recursive version with global variables (because I also wanted to provide a solution with two nested loops "faking" recursion, but gave up)

NB: it's optimized for the dual case, where it's easier to set 0s into a string full of 1s.

```use 5.12.0;
use strict;
use warnings;
use Data::Dump qw/pp dd/;
use Test::More;

my \$ones = 3;
my \$len = 5;

my @res;
my (\$zero,\$one) = ('0','1');

# optimize dual case
if (\$ones > \$len/2) {
(\$zero,\$one) = (\$one,\$zero);
\$ones = \$len-\$ones;
}

my \$max = \$len - 1;
our \$str = \$zero x \$len;
our \$level = 0;

rec(0);
pp \@res;

sub rec {
local \$level = \$level + 1;
my (\$start) =@_;
for my \$idx ( \$start .. \$max ) {
local \$str = \$str;
substr \$str, \$idx, 1, \$one;
if (\$level < \$ones) {
rec( \$idx + 1 );
} else {
push @res, \$str;
}
}
}

```[
"00111",
"01011",
"01101",
"01110",
10011,
10101,
10110,
11001,
11010,
11100,
]

Cheers Rolf
(addicted to the Perl Programming Language :)
Wikisyntax for the Monastery

• Comment on Re^2: Generate all unique combinations of 1 and 0 using specified length of "0"-string and count of 1's

Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://11121947]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others examining the Monastery: (3)
As of 2022-12-09 03:32 GMT
Sections?
Information?
Find Nodes?
Leftovers?
Voting Booth?

No recent polls found

Notices?