RosettaCodeData/Task/Permutations/XPL0/permutations.xpl0

26 lines
797 B
Plaintext

code ChOut=8, CrLf=9;
def N=4; \number of objects (letters)
char S0, S1(N);
proc Permute(D); \Display all permutations of letters in S0
int D; \depth of recursion
int I, J;
[if D=N then
[for I:= 0 to N-1 do ChOut(0, S1(I));
CrLf(0);
return;
];
for I:= 0 to N-1 do
[for J:= 0 to D-1 do \check if object (letter) already used
if S1(J) = S0(I) then J:=100;
if J<100 then
[S1(D):= S0(I); \object (letter) not used so append it
Permute(D+1); \recurse next level deeper
];
];
];
[S0:= "rose "; \N different objects (letters)
Permute(0); \(space char avoids MSb termination)
]