Permutations: Difference between revisions

Content added Content deleted
(Lua)
Line 1,503: Line 1,503:


<lang lua>
<lang lua>
local function permutation(a, n)
local function permutation(a, n, cb)
if n == 0 then
if n == 0 then
cb(a)
print('{'..table.concat(a, ', ')..'}')
else
else
for i = 1, n do
for i = 1, n do
a[i], a[n] = a[n], a[i]
a[i], a[n] = a[n], a[i]
permutation(a, n - 1)
permutation(a, n - 1, cb)
a[i], a[n] = a[n], a[i]
a[i], a[n] = a[n], a[i]
end
end
Line 1,515: Line 1,515:
end
end


--Usage
permutation({1,2,3}, 3)
local function callback(a)

print('{'..table.concat(a, ', ')..'}')
-- {2, 3, 1}
end
-- {3, 2, 1}
permutation({1,2,3}, 3, callback)
-- {3, 1, 2}
-- {1, 3, 2}
-- {2, 1, 3}
-- {1, 2, 3}
</lang>
</lang>
{{out}}
<pre>
{2, 3, 1}
{3, 2, 1}
{3, 1, 2}
{1, 3, 2}
{2, 1, 3}
{1, 2, 3}
</pre>


=={{header|Mathematica}}==
=={{header|Mathematica}}==