Superpermutation minimisation: Difference between revisions
Content deleted Content added
Add Reference: A video of recent (2018) mathematical progress. |
|||
Line 536:
superPerm(10) len = 4037913
superPerm(11) len = 43954713</pre>
=={{header|Julia}}==
{{trans|D}}
<lang julia>const nmax = 12
function superpermutation(n)
pos = 1
count = zeros(nmax)
function r!(n, s)
if n == 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
pos = n
superperm = zeros(UInt8, n < 2 ? n : mapreduce(factorial, +, 1:n))
for i in 0:n-1
count[i + 1] = i
superperm[i + 1] = Char(i + '0')
end
count[n + 1] = n
while r!(n, superperm) ; end
String(superperm)
end
function testsuper(N, verbose=false)
for i in 0:N-1
s = superpermutation(i)
println("Superperm($i) has length $(length(s)) ", (verbose ? s : ""))
end
end
testsuper(nmax)
</lang>{{out}}
<pre>
Superperm(0) has length 0
Superperm(1) has length 1
Superperm(2) has length 3
Superperm(3) has length 9
Superperm(4) has length 33
Superperm(5) has length 153
Superperm(6) has length 873
Superperm(7) has length 5913
Superperm(8) has length 46233
Superperm(9) has length 409113
Superperm(10) has length 4037913
Superperm(11) has length 43954713
</pre>
=={{header|Kotlin}}==
|