57 lines
1.0 KiB
Plaintext
57 lines
1.0 KiB
Plaintext
function permutation ($array) {
|
|
function generate($n, $array, $A) {
|
|
if($n -eq 1) {
|
|
$array[$A] -join ''
|
|
}
|
|
else{
|
|
for( $i = 0; $i -lt ($n - 1); $i += 1) {
|
|
generate ($n - 1) $array $A
|
|
if($n % 2 -eq 0){
|
|
$i1, $i2 = $i, ($n-1)
|
|
$temp = $A[$i1]
|
|
$A[$i1] = $A[$i2]
|
|
$A[$i2] = $temp
|
|
}
|
|
else{
|
|
$i1, $i2 = 0, ($n-1)
|
|
$temp = $A[$i1]
|
|
$A[$i1] = $A[$i2]
|
|
$A[$i2] = $temp
|
|
}
|
|
}
|
|
generate ($n - 1) $array $A
|
|
}
|
|
}
|
|
$n = $array.Count
|
|
if($n -gt 0) {
|
|
(generate $n $array (0..($n-1)))
|
|
} else {$array}
|
|
}
|
|
$perm = permutation @('A','B','C', 'D')
|
|
$find = @(
|
|
"ABCD"
|
|
"CABD"
|
|
"ACDB"
|
|
"DACB"
|
|
"BCDA"
|
|
"ACBD"
|
|
"ADCB"
|
|
"CDAB"
|
|
"DABC"
|
|
"BCAD"
|
|
"CADB"
|
|
"CDBA"
|
|
"CBAD"
|
|
"ABDC"
|
|
"ADBC"
|
|
"BDCA"
|
|
"DCBA"
|
|
"BACD"
|
|
"BADC"
|
|
"BDAC"
|
|
"CBDA"
|
|
"DBCA"
|
|
"DCAB"
|
|
)
|
|
$perm | where{-not $find.Contains($_)}
|