Permutations by swapping: Difference between revisions

Content added Content deleted
m (→‎{{header|REXX}}: changed/added comments and whitespace, changed indentations.)
Line 895: Line 895:
=={{header|Lua}}==
=={{header|Lua}}==
{{trans|C++}}
{{trans|C++}}
<lang Lua>
<lang Lua>_JT={}
function JT(dim)
JT={ values={}, positions={}, directions={}, sign=1 }
local n={ values={}, positions={}, directions={}, sign=1 }

setmetatable(n,{__index=_JT})
function JT:new(dim)
local n={}
setmetatable(n,{__index=self})
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 JT:largestMobile()
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 JT:next()
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:new(4)
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