RosettaCodeData/Task/Topswops/EasyLang/topswops.easy
2026-04-30 12:34:36 -04:00

30 lines
574 B
Text

global n d best[] .
#
proc tryswaps &a[] f .
if d > best[n] : best[n] = d
for s = len a[] downto 1
if a[s] = 0 or a[s] = s : break 1
if d + best[s] <= best[n] : return
.
d += 1
for i = 1 to s : b[] &= a[i]
k = 1
for i = 2 to s
k *= 2
if b[i] = 0 and bitand f k = 0 or b[i] = i
b[1] = i
for j = i - 1 downto 1
b[i - j + 1] = a[j]
.
tryswaps b[] (bitor f k)
.
.
d -= 1
.
for n = 1 to 10
best[] &= 0
x[] &= 0
d = 0
tryswaps x[] 1
print n & ": " & best[n]
.