Jump to content

Permutations by swapping: Difference between revisions

cleaner version
m (→‎{{header|Phix}}: added syntax colouring the hard way)
(cleaner version)
Line 2,333:
=={{header|PowerShell}}==
<lang PowerShell>
function permutation output([Object[]]$A, [Int]$k, [ref]$arraysign) {
{
function sign($A) {
"Perm: [$([String]::Join(', ', $A))] Sign $($sign.Value) `n"
$size = $A.Count
}
$sign = 1
 
for($i = 0; $i -lt $size; $i++) {
function permutation ($array)
for($j = $i+1; $j -lt $size ; $j++) {
{
if($A[$j] -lt $A[$i]) { $sign *= -1}
function generate([Object[]]$A, [Int]$k, [ref]$sign)
}
}{
if($signk -eq 1)
} {
function generate($n, $A, $i1, output $i2,A $cnt)k {$sign
if($n -eq 1) { $sign.Value = -$sign.Value
if($cnt -gt 0) {
"$A -- swapped positions: $i1 $i2 -- sign = $(sign $A)`n"
} else {
"$A -- sign = $(sign $A)`n"
}
}
else{
$sign = 1{
for( $i = 0; $i -lt ($n - 1); $i += 1) {
generate $A generate ($nk - 1) $A $i1 $i2 $cntsign
for([Int]$i = 0; if($ni %-lt 2$k -eq 01; $i += 1){
$i1, $i2 = $i, ($n-1){
if($A[$i1],i $A[$i2]% =2 $A[$i2],-eq $A[$i1]0)
$cnt = 1{
" $A[$i], $A[$k -- sign1] = $(signA[$k - 1], $A)`n"[$i]
}
else{
$i1, $i2 = 0, ($n-1){
$A[$i10], $A[$i2k - 1] = $A[$i2k - 1], $A[$i10]
$cnt = 1
}
if(generate $A[ ($j]k -lt $A[$i]1) { $sign *= -1}
}
generate ($n - 1) $A $i1 $i2 $cnt
}
}
generate $n =array $array.Count ([ref]1)
if($n -gt 0) {
(generate $n $array 0 ($n-1) 0)
} else {$array}
}
permutation @(0, 1,2,3,4)
</lang>
<b>Output:</b>
<pre>
Perm: [0, 1, 2, 3] 4 -- sign =Sign 1
 
Perm: [1, 0, 2, 3] Sign -1
2 1 3 4 -- swapped positions: 0 1 -- sign = -1
 
Perm: [2, 0, 1, 3] Sign 1
3 1 2 4 -- swapped positions: 0 2 -- sign = 1
 
Perm: [0, 2, 1, 3] Sign -1
1 3 2 4 -- swapped positions: 0 1 -- sign = -1
 
Perm: [1, 2, 0, 3] Sign 1
2 3 1 4 -- swapped positions: 0 2 -- sign = 1
 
Perm: [2, 1, 0, 3] Sign -1
3 2 1 4 -- swapped positions: 0 1 -- sign = -1
 
Perm: [3, 1, 0, 2] Sign 1
4 2 1 3 -- swapped positions: 0 3 -- sign = 1
 
2 4Perm: [1, 3 -- swapped positions:, 0, 12] -- sign =Sign -1
 
Perm: [0, 3, 1, 2] Sign 1
1 4 2 3 -- swapped positions: 0 2 -- sign = 1
 
4 1 2Perm: [3 -- swapped positions:, 0, 1, --2] sign =Sign -1
 
Perm: [1, 0, 3, 2] Sign 1
2 1 4 3 -- swapped positions: 0 2 -- sign = 1
 
1 2 4 3 -- swapped positionsPerm: [0, 1, --3, sign2] =Sign -1
 
1 3 4Perm: [2 -- swapped positions:, 1, 3, --0] signSign =1 1
 
Perm: [1, 2, 3, 0] Sign -1
3 1 4 2 -- swapped positions: 0 1 -- sign = -1
 
Perm: [3, 2, 1, 0] Sign 1
4 1 3 2 -- swapped positions: 0 2 -- sign = 1
 
Perm: [2, 3, 1, 0] Sign -1
1 4 3 2 -- swapped positions: 0 1 -- sign = -1
 
Perm: [1, 3, 2, 0] Sign 1
3 4 1 2 -- swapped positions: 0 2 -- sign = 1
 
4Perm: [3, 1, 2 -- swapped positions:, 0] 1Sign --1 sign = -1
 
Perm: [3, 1, 0, 2] Sign 1
4 3 2 1 -- swapped positions: 2 3 -- sign = 1
 
Perm: [1, 3, 0, 2] Sign -1
3 4 2 1 -- swapped positions: 0 1 -- sign = -1
 
Perm: [0, 3, 1, 2] Sign 1
2 4 3 1 -- swapped positions: 0 2 -- sign = 1
 
4 2Perm: [3 1 -- swapped positions:, 0, 1, --2] sign =Sign -1
 
Perm: [1, 0, 3, 2] Sign 1
3 2 4 1 -- swapped positions: 0 2 -- sign = 1
 
2 3 4 1 -- swapped positionsPerm: [0, 1, --3, sign2] =Sign -1
</pre>
 
678

edits

Cookies help us deliver our services. By using our services, you agree to our use of cookies.