#! perl -slw
use strict;
sub adjSets{
my $min = shift;
map {
my $start = $_;
map {
[ @_[ $start .. $start+$_ ] ]
} $min-1 .. $#_-$start;
} 0 .. $#_ - $min;
}
sub adjSets2{
my $min = shift;
my @rv;
for my $start ( 0 .. $#_ - $min ) {
for my $len ( $min-1 .. $#_-$start ) {
push @rv, [ @_[ $start .. $start+$len ] ];
}
}
return @rv;
}
print "@$_" for adjSets( 2, 'A'..'E' );;
__END__
c:\test>689189
A B
A B C
A B C D
A B C D E
B C
B C D
B C D E
C D
C D E
####
#! perl -slw
use strict;
sub adjSets{
my $min = shift;
map {
my $start = $_;
map { [ @_[ $start .. $_ ] ] } $min .. $#_;
} 0 .. $#_ - $min;
}
print "@$_" for adjSets( 2, 'A'..'E' );;
__END__
A B C
A B C D
A B C D E
B C
B C D
B C D E
C
C D
C D E
####
sub adjSets2{
my $min = shift;
my @rv;
for my $start ( 0 .. $#_ - $min ) {
for my $len ( $min .. $#_ ) {
push @rv, [ @_[ $start .. $len ] ];
}
}
return @rv;
}