■ 配列の全ての並び順を取得する
Last Update: 2004--0-1- (Sat) 30: 1
他所で書く機会があったので、せっかくなのでメモ。
例えば、これを実行すると、
3,2,1
3,1,2
2,3,1
2,1,3
1,3,2
1,2,3
を返してくれる。
@lines = (3, 2, 1); @lines = return_array(@lines);
foreach (@lines) { print "$_ \n"; }
sub return_array { my @ret; my @lines = @_;
if($#lines == 1) { $ret[0] = "$lines[0],$lines[1]"; $ret[1] = "$lines[1],$lines[0]"; return @ret; } else { foreach my $no (0..$#lines) { my @tmp_line = @lines; splice(@tmp_line, $no, 1); my @tmp_ret = return_array(@tmp_line); @tmp_ret = map { "$lines[$no],$_"; } @tmp_ret; push(@ret, @tmp_ret); } return @ret; } }
既に誰かモジュール化したりしてたら、嫌だな。
Posted by Kyosuke Takayama at 2004-01-30 (Fri) 15:19 printable version