Superpermutation minimisation: Difference between revisions

m
Line 540:
=={{header|Julia}}==
{{trans|D}}
Runs in about 1/4 second.
<lang julia>const nmax = 12
 
function superpermutationr!(n, s, pos, count)
posif n == 10
count = zeros(nmax) return false
end
 
functionc r!(n,= s)[pos + 1 - n]
count[n + 1] if n =-= 01
if count[n + 1] == 0
count[n + 1] -= 1n
if r!(n - 1, s, pos, count) == 0
return false
end
c = s[pos + 1 - n]
count[n + 1] -= 1
if count[n + 1] == 0
count[n + 1] = n
if r!(n - 1, s) == 0
return false
end
end
s[pos] = c
pos += 1
return true
end
s[pos] = c
pos += 1
return true
end
 
function superpermutation(n)
pos = 1
count = zeros(nmax)
pos = n
superperm = zeros(UInt8, n < 2 ? n : mapreduce(factorial, +, 1:n))
Line 570:
end
count[n + 1] = n
while r!(n, superperm, pos, count) ; end
superperm
end
4,102

edits