Sorting algorithms/Permutation sort: Difference between revisions

Added Lua version
m (→‎{{header|REXX}}: added/changed comments and whitespace, brought a function in-line, aligned some statements, used template for output.)
(Added Lua version)
Line 936:
After sorting : [fifth, first, fourth, second, sixth, third]
</pre>
 
=={{header|Lua}}==
<lang Lua>-- Return an iterator to produce every permutation of list
function permute (list)
local function perm (list, n)
if n == 0 then coroutine.yield(list) end
for i = 1, n do
list[i], list[n] = list[n], list[i]
perm(list, n - 1)
list[i], list[n] = list[n], list[i]
end
end
return coroutine.wrap(function() perm(list, #list) end)
end
 
-- Return true if table t is in ascending order or false if not
function inOrder (t)
for pos = 2, #t do
if t[pos] < t[pos - 1] then
return false
end
end
return true
end
 
-- Main procedure
local list = {2,3,1} --\ Written to match task pseudocode,
local nextPermutation = permute(list) --\ more idiomatic would be:
while not inOrder(list) do --\
list = nextPermutation() --/ for p in permute(list) do
end --/ stuffWith(p)
print(unpack(list)) --/ end</lang>
{{out}}
<pre>1 2 3</pre>
 
=={{header|Mathematica}}==
Anonymous user