Thread permutation (31 answers)
Opened by esskar at 2006-09-11 12:30

docsnyder
 2006-09-11 16:29
#69630 #69630
User since
2005-09-08
300 Artikel
BenutzerIn
[Homepage] [default_avatar]
@esskar

Ich glaube, die Leutz haben nicht so recht verstanden, was Du willst, denn mit Permutation hat das nichts zu tun.

Was Du brauchst ist:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$str = 'foo-bar-hutzel-putzel';
$len = scalar(@arr = $str =~ /-/g);
$max = (2 ** scalar(@arr)) - 1;
$pat = '^' . '([^-]*)-' x scalar(@arr) . '([^-]*)$';

for $i ( 0..$max ) {
$bits = sprintf("%03b", $i);
$subs = '';

for $j ( 0..($len-1) ) {
$subs .= '$' . ($j+1) . ((($bits >> $j) & 0x1) ? '-' : '');
}

$subs .= '$4';

eval("(\$tmp = '$str') =~ s/$pat/$subs/;");

printf("$tmp\n");
}


Das generiert die Ausgabe:

Code: (dl )
1
2
3
4
5
6
7
8
foobarhutzelputzel
foo-barhutzelputzel
foobar-hutzelputzel
foo-bar-hutzelputzel
foobarhutzel-putzel
foo-barhutzel-putzel
foobar-hutzel-putzel
foo-bar-hutzel-putzel


... und das willst Du ja genau haben ;o)

Gruß, Doc\n\n

<!--EDIT|docsnyder|1157977892-->

View full thread permutation