Permutations by swapping: Difference between revisions
Content added Content deleted
m (→{{header|REXX}}: changed/added comments and whitespace, changed indentations.) |
m (→{{header|Lua}}) |
||
Line 895: | Line 895: | ||
=={{header|Lua}}== |
=={{header|Lua}}== |
||
{{trans|C++}} |
{{trans|C++}} |
||
<lang Lua> |
<lang Lua>_JT={} |
||
⚫ | |||
local n={ values={}, positions={}, directions={}, sign=1 } |
|||
⚫ | |||
⚫ | |||
local n={} |
|||
⚫ | |||
for i=1,dim do |
for i=1,dim do |
||
n.values[i]=i |
n.values[i]=i |
||
Line 909: | Line 907: | ||
end |
end |
||
function |
function _JT:largestMobile() |
||
for i=#self.values,1,-1 do |
for i=#self.values,1,-1 do |
||
local loc=self.positions[i]+self.directions[i] |
local loc=self.positions[i]+self.directions[i] |
||
Line 919: | Line 917: | ||
end |
end |
||
function |
function _JT:next() |
||
local r=self:largestMobile() |
local r=self:largestMobile() |
||
if r==0 then return false end |
if r==0 then return false end |
||
Line 934: | Line 932: | ||
-- test |
-- test |
||
perm=JT |
perm=JT(4) |
||
repeat |
repeat |
||
print(unpack(perm.values)) |
print(unpack(perm.values)) |
||
until not perm:next() |
until not perm:next()</lang> |
||
</lang> |
|||
{{out}} |
{{out}} |
||
<pre>1 2 3 4 |
<pre>1 2 3 4 |