36 lines
817 B
Plaintext
36 lines
817 B
Plaintext
PROCperms(3)
|
|
PRINT
|
|
PROCperms(4)
|
|
END
|
|
|
|
DEF PROCperms(n%)
|
|
LOCAL p%(), i%, k%, s%
|
|
DIM p%(n%)
|
|
FOR i% = 1 TO n%
|
|
p%(i%) = -i%
|
|
NEXT
|
|
s% = 1
|
|
REPEAT
|
|
PRINT "Perm: [ ";
|
|
FOR i% = 1 TO n%
|
|
PRINT ;ABSp%(i%) " ";
|
|
NEXT
|
|
PRINT "] Sign: ";s%
|
|
k% = 0
|
|
FOR i% = 2 TO n%
|
|
IF p%(i%)<0 IF ABSp%(i%)>ABSp%(i%-1) IF ABSp%(i%)>ABSp%(k%) k% = i%
|
|
NEXT
|
|
FOR i% = 1 TO n%-1
|
|
IF p%(i%)>0 IF ABSp%(i%)>ABSp%(i%+1) IF ABSp%(i%)>ABSp%(k%) k% = i%
|
|
NEXT
|
|
IF k% THEN
|
|
FOR i% = 1 TO n%
|
|
IF ABSp%(i%)>ABSp%(k%) p%(i%) *= -1
|
|
NEXT
|
|
i% = k%+SGNp%(k%)
|
|
SWAP p%(k%),p%(i%)
|
|
s% = -s%
|
|
ENDIF
|
|
UNTIL k% = 0
|
|
ENDPROC
|