0,0,0,0
0,0,0,2
0,0,0,3
0,0,2,2
0,0,2,3
0,0,3,3
0,2,2,2
0,2,2,3
0,2,3,3
0,3,3,3
2,2,2,2
2,2,2,3
2,2,3,3
2,3,3,3
3,3,3,3
####
#!/usr/bin/perl
use Modern::Perl '2015';
use Math::Combinatorics;
my $states = 4;
foreach my $count (1, 2, 3, 4, 7, 8) {
say "count=$count";
my $iter = Math::Combinatorics->new(
count => $count,
data => [ grep { $_ != 1 } (0 .. ($states - 1)) ],
frequency => [($count) x ($states - 1)]
);
while(my @states = $iter->next_multiset) {
say join(",", @states);
}
}
##
##
time perl test.pl
count=1
3
0
2
count=2
0,0
0,2
0,3
2,3
2,2
3,3
count=3
3,0,0
3,0,2
3,0,3
3,2,3
3,2,2
3,3,3
0,0,2
0,0,0
0,2,2
2,2,2
count=4
3,2,0,3
3,2,0,2
3,2,0,0
3,2,3,2
3,2,3,3
3,2,2,2
3,0,3,0
3,0,3,3
3,0,0,0
3,3,3,3
2,0,2,2
2,0,2,0
2,0,0,0
2,2,2,2
0,0,0,0
count=7
2,0,2,3,0,0,3
2,0,2,3,0,0,0
2,0,2,3,0,0,2
2,0,2,3,0,3,3
2,0,2,3,0,3,2
2,0,2,3,0,2,2
2,0,2,3,3,3,2
2,0,2,3,3,3,3
2,0,2,3,3,2,2
2,0,2,3,2,2,2
2,0,2,0,0,0,0
2,0,2,0,0,0,2
2,0,2,0,0,2,2
2,0,2,0,2,2,2
2,0,2,2,2,2,2
2,0,3,0,0,3,0
2,0,3,0,0,3,3
2,0,3,0,0,0,0
2,0,3,0,3,3,3
2,0,3,3,3,3,3
2,0,0,0,0,0,0
2,2,3,3,3,2,3
2,2,3,3,3,2,2
2,2,3,3,3,3,3
2,2,3,3,2,2,2
2,2,3,2,2,2,2
2,2,2,2,2,2,2
2,3,3,3,3,3,3
0,3,0,0,3,0,0
0,3,0,0,3,0,3
0,3,0,0,3,3,3
0,3,0,0,0,0,0
0,3,0,3,3,3,3
0,3,3,3,3,3,3
0,0,0,0,0,0,0
3,3,3,3,3,3,3
count=8
3,0,0,0,0,2,2,2
3,0,0,0,0,2,2,3
3,0,0,0,0,2,2,0
3,0,0,0,0,2,3,3
3,0,0,0,0,2,3,0
3,0,0,0,0,2,0,0
3,0,0,0,0,3,3,3
3,0,0,0,0,3,3,0
3,0,0,0,0,3,0,0
3,0,0,0,0,0,0,0
3,0,0,0,2,2,2,2
3,0,0,0,2,2,2,3
3,0,0,0,2,2,3,3
3,0,0,0,2,3,3,3
3,0,0,0,3,3,3,3
3,0,0,2,2,2,2,3
3,0,0,2,2,2,2,2
3,0,0,2,2,2,3,3
3,0,0,2,2,3,3,3
3,0,0,2,3,3,3,3
3,0,0,3,3,3,3,3
3,0,2,2,2,2,3,3
3,0,2,2,2,2,3,2
3,0,2,2,2,2,2,2
3,0,2,2,2,3,3,3
3,0,2,2,3,3,3,3
3,0,2,3,3,3,3,3
3,0,3,3,3,3,3,3
3,2,2,2,2,3,3,3
3,2,2,2,2,3,3,2
3,2,2,2,2,3,2,2
3,2,2,2,2,2,2,2
3,2,2,2,3,3,3,3
3,2,2,3,3,3,3,3
3,2,3,3,3,3,3,3
3,3,3,3,3,3,3,3
0,0,0,0,2,2,2,2
0,0,0,0,2,2,2,0
0,0,0,0,2,2,0,0
0,0,0,0,2,0,0,0
0,0,0,0,0,0,0,0
0,0,0,2,2,2,2,2
0,0,2,2,2,2,2,2
0,2,2,2,2,2,2,2
2,2,2,2,2,2,2,2
real 1m34.525s
user 1m32.524s
sys 0m0.030s