Another update from ingydotnet^djgoku
This commit is contained in:
parent
91df62d461
commit
948b86eafa
7604 changed files with 108452 additions and 22726 deletions
|
|
@ -0,0 +1,42 @@
|
|||
function permutation ($array) {
|
||||
function sign($A) {
|
||||
$size = $A.Count
|
||||
$sign = 1
|
||||
for($i = 0; $i -lt $size; $i++) {
|
||||
for($j = $i+1; $j -lt $size ; $j++) {
|
||||
if($A[$j] -lt $A[$i]) { $sign *= -1}
|
||||
}
|
||||
}
|
||||
$sign
|
||||
}
|
||||
function generate($n, $A, $i1, $i2, $cnt) {
|
||||
if($n -eq 1) {
|
||||
if($cnt -gt 0) {
|
||||
"$A -- swapped positions: $i1 $i2 -- sign = $(sign $A)`n"
|
||||
} else {
|
||||
"$A -- sign = $(sign $A)`n"
|
||||
}
|
||||
}
|
||||
else{
|
||||
for( $i = 0; $i -lt ($n - 1); $i += 1) {
|
||||
generate ($n - 1) $A $i1 $i2 $cnt
|
||||
if($n % 2 -eq 0){
|
||||
$i1, $i2 = $i, ($n-1)
|
||||
$A[$i1], $A[$i2] = $A[$i2], $A[$i1]
|
||||
$cnt = 1
|
||||
}
|
||||
else{
|
||||
$i1, $i2 = 0, ($n-1)
|
||||
$A[$i1], $A[$i2] = $A[$i2], $A[$i1]
|
||||
$cnt = 1
|
||||
}
|
||||
}
|
||||
generate ($n - 1) $A $i1 $i2 $cnt
|
||||
}
|
||||
}
|
||||
$n = $array.Count
|
||||
if($n -gt 0) {
|
||||
(generate $n $array 0 ($n-1) 0)
|
||||
} else {$array}
|
||||
}
|
||||
permutation @(1,2,3,4)
|
||||
Loading…
Add table
Add a link
Reference in a new issue