48 lines
1.1 KiB
Plaintext
48 lines
1.1 KiB
Plaintext
#COMPILE EXE
|
|
#DIM ALL
|
|
|
|
FUNCTION PBMAIN () AS LONG
|
|
LOCAL n, i, j, k, p, q AS INTEGER
|
|
LOCAL m AS QUAD
|
|
IF COMMAND$(1) <> "" THEN
|
|
n = VAL(COMMAND$(1))
|
|
REDIM a(1 TO n) AS INTEGER
|
|
REDIM s(1 TO n) AS INTEGER
|
|
REDIM u(1 TO 2 * n - 1) AS INTEGER
|
|
REDIM v(1 TO 2 * n - 1) AS INTEGER
|
|
FOR i = 1 TO n
|
|
a(i) = i
|
|
NEXT
|
|
FOR i = 1 TO 2 * n - 1
|
|
u(i) = 1
|
|
v(i) = 1
|
|
NEXT
|
|
m = 0
|
|
i = 1
|
|
1 IF i > n THEN
|
|
INCR m
|
|
FOR k = 1 TO n : PRINT a(k); : NEXT : PRINT
|
|
GOTO 4
|
|
END IF
|
|
j = i
|
|
2 k = a(j)
|
|
p = i - k + n
|
|
q = i + k - 1
|
|
IF u(p) AND v(q) THEN
|
|
u(p) = 0 : v(q) = 0
|
|
a(j) = a(i) : a(i) = k
|
|
s(i) = j
|
|
INCR i
|
|
GOTO 1
|
|
END IF
|
|
3 INCR j : IF j <= n GOTO 2
|
|
4 DECR i : IF i = 0 THEN PRINT m : EXIT FUNCTION
|
|
j = s(i)
|
|
k = a(i) : a(i) = a(j) : a(j) = k
|
|
p = i - k + n
|
|
q = i + k - 1
|
|
u(p) = 1 : v(q) = 1
|
|
GOTO 3
|
|
END IF
|
|
END FUNCTION
|