例如,我有一个数组
my @arr = qw(0 1 2 3 4);
Run Code Online (Sandbox Code Playgroud)
如何获得以下组合:
0
01
012
0123
01234
1
12
123
1234
2
23
234
3
34
4
Run Code Online (Sandbox Code Playgroud)
如果有的话,这种组合(或排列)的名称是什么?
永远感谢!
就个人而言,我发现gbacon使用的循环"C风格"通常会不必要地使代码复杂化.而且通常可以用更容易理解的"范围式"循环替换它.
#!/usr/bin/perl
use strict;
use warnings;
my @arr = qw(0 1 2 3 4);
my @result;
for my $i (0 .. $#arr) {
for my $j ($i .. $#arr) {
push @result => [ @arr[$i .. $j] ];
}
}
print @$_, "\n" for @result;
Run Code Online (Sandbox Code Playgroud)
使用数组切片:
#! /usr/bin/perl
use warnings;
use strict;
my @arr = qw(0 1 2 3 4);
my @result;
for (my $i = 0; $i < @arr; $i++) {
for (my $j = $i; $j < @arr; $j++) {
push @result => [ @arr[$i .. $j] ];
}
}
print @$_, "\n" for @result;
Run Code Online (Sandbox Code Playgroud)
输出:
0 01 012 0123 01234 1 12 123 1234 2 23 234 3 34 4