Permutations: Difference between revisions
Add XPL0 ... and fix a typo or two
m (→version 2: changed section header comment (added ''taken'' to the text). -- ~~~~) |
(Add XPL0 ... and fix a typo or two) |
||
Line 1:
{{task|Discrete math}}
Write a program
;C.f.
* [[Find the missing permutation]]
Line 2,589:
permute 10,False
Number of permutations: 3628800
</pre>
=={{header|XPL0}}==
<lang XPL0>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)
]</lang>
Output:
<pre>
rose
roes
rsoe
rseo
reos
reso
orse
ores
osre
oser
oers
oesr
sroe
sreo
sore
soer
sero
seor
eros
erso
eors
eosr
esro
esor
</pre>
|