Permutations: Difference between revisions
Content added Content deleted
(→{{header|Qi}}: Forgot insert function) |
(adding maxima, trnalation of Ada) |
||
Line 1,219: | Line 1,219: | ||
4, 1}, {2, 4, 1, 3}, {2, 4, 3, 1}, {3, 1, 2, 4}, {3, 1, 4, 2}, {3, 2, 1, 4}, {3, 2, 4, 1}, {3, 4, 1, 2}, {3, 4, 2, 1}, {4, 1, 2, |
4, 1}, {2, 4, 1, 3}, {2, 4, 3, 1}, {3, 1, 2, 4}, {3, 1, 4, 2}, {3, 2, 1, 4}, {3, 2, 4, 1}, {3, 4, 1, 2}, {3, 4, 2, 1}, {4, 1, 2, |
||
3}, {4, 1, 3, 2}, {4, 2, 1, 3}, {4, 2, 3, 1}, {4, 3, 1, 2}, {4, 3, 2, 1}}</pre> |
3}, {4, 1, 3, 2}, {4, 2, 1, 3}, {4, 2, 3, 1}, {4, 3, 1, 2}, {4, 3, 2, 1}}</pre> |
||
=={{header|Maxima}}== |
|||
<lang maxima>next_permutation(v) := block([n, i, j, k], |
|||
n: length(v), i: 0, |
|||
for k: n - 1 thru 1 step -1 do (if v[k] < v[k+1] then (i: k, return())), |
|||
j: i + 1, k: n, |
|||
while j < k do (t: v[j], v[j]: v[k], v[k]: t, j: j + 1, k: k - 1), |
|||
if i = 0 then return(false), |
|||
j: i + 1, |
|||
while v[j] < v[i] do j: j + 1, |
|||
t: v[j], v[j]: v[i], v[i]: t, |
|||
true |
|||
)$ |
|||
print_perm(n) := block([ ], |
|||
v: makelist(i, i, 1, n), |
|||
disp(v), |
|||
while next_permutation(v) do disp(v) |
|||
)$ |
|||
print_perm(3); |
|||
/* [1,2,3] |
|||
[1,3,2] |
|||
[2,1,3] |
|||
[2,3,1] |
|||
[3,1,2] |
|||
[3,2,1] */</lang> |
|||
=={{header|OCaml}}== |
=={{header|OCaml}}== |