Permutations by swapping: Difference between revisions
→{{header|Quackery}}: improved
m (→{{header|Quackery}}: bug fix) |
(→{{header|Quackery}}: improved) |
||
Line 2,941:
=={{header|Quackery}}==
<syntaxhighlight lang="Quackery"> [ stack ] is parity ( --> s )
[ 1 & ] is odd ( n --> b )
[
[ drop ' [ [ ] ] ]▼
done▼
dup temp put▼
1 - recurse▼
[] swap▼
witheach▼
[ i odd parity put▼
temp share times▼
[ temp share 1 -▼
over▼
parity share▼
iff i else i^▼
stuff▼
nested rot join▼
swap ]▼
drop▼
parity release ]▼
temp release ] is perms ( n --> [ )▼
[ dup 0 peek▼
[ nested
odd 2 * 1 -▼
nested join ]▼
▲ parity release ] is +signs ( [ --> [ )
▲ [ drop ' [ [ ] ] ]
▲ done
▲ dup temp put
▲ 1 - recurse
▲ [] swap
▲ witheach
▲ [ i odd parity put
▲ temp share times
▲ [ temp share 1 -
▲ over
▲ parity share
▲ iff i else i^
▲ stuff
▲ nested rot join
▲ swap ]
▲ drop
▲ parity release ]
swap odd if reverse
cr
4 perms
▲ witheach [ echo cr ]</syntaxhighlight>
{{out}}
<pre>[ [
[ [ 1 2 0 ] 1 ]▼
[ [ 2 1 0 ] -1 ]▼
[ [ 0 2 1 ] -1 ]
[ [ 2 0 1
▲[ [ 2 1 0 ] -1 ]
▲[ [ 1 2 0 ] 1 ]
[ [ 0 1 2 3 ] 1 ]
|