Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
|
|
@ -0,0 +1,52 @@
|
|||
include xpllib; \for Print and StrLen
|
||||
|
||||
define Maxx = 12;
|
||||
char Super;
|
||||
int Pos, Cnt(Maxx);
|
||||
|
||||
func FactSum(N); \1! + 2! + ... + n!
|
||||
int N, S, X, F;
|
||||
[S:= 0; X:= 0; F:= 1;
|
||||
while X < N do
|
||||
[X:= X+1;
|
||||
F:= F*X;
|
||||
S:= S+F;
|
||||
];
|
||||
return S;
|
||||
];
|
||||
|
||||
func R(N);
|
||||
int N, C;
|
||||
[if N = 0 then return false;
|
||||
C:= Super(Pos - N);
|
||||
Cnt(N):= Cnt(N)-1;
|
||||
if Cnt(N) = 0 then
|
||||
[Cnt(N):= N;
|
||||
if R(N-1) = 0 then return false;
|
||||
];
|
||||
Super(Pos):= C; Pos:= Pos+1;
|
||||
return true;
|
||||
];
|
||||
|
||||
proc Superperm(N);
|
||||
int N, I, Len;
|
||||
[Pos:= N;
|
||||
Len:= FactSum(N);
|
||||
Super:= ReallocMem(Super, Len+1);
|
||||
Super(Len):= 0;
|
||||
for I:= 0 to N do Cnt(I):= I;
|
||||
for I:= 1 to N do Super(I-1):= I+^0;
|
||||
while R(N) do [];
|
||||
];
|
||||
|
||||
int N;
|
||||
[Super:= 0;
|
||||
for N:= 0 to Maxx-1 do
|
||||
[Print("Superperm(%d) ", N);
|
||||
Superperm(N);
|
||||
Print("len = %d", StrLen(Super));
|
||||
\Uncomment next line to see the string itself
|
||||
\Print(": %s", Super);
|
||||
CrLf(0);
|
||||
];
|
||||
]
|
||||
Loading…
Add table
Add a link
Reference in a new issue