in reply to Generate all (0,1)-sequences in lexicographic order
You build arrays of zeros and ones here, but usually I prefer strings. Here's an interesting way to build an iterator for all strings of length n, base b, given an appropriate b:
Hugosub iterator { my($n, $b) = @_; my $limit = $b - 1; die "base out of range" unless $limit =~ /^\d$/; my $str; sub { return $str = "0" x $n unless defined $str; return $str =~ s/([^$limit])($limit*)$/($1+1)."0" x length($2)/e ? $str : undef; } } # Usage: my $iterator = iterator(5, 2); while (defined($next = $iterator->())) { print "next: $next\n"; }
|
|---|