Topswops: Difference between revisions
Content added Content deleted
m (added whitespace and highlighting for the German word.) |
(Added Wren) |
||
Line 2,170: | Line 2,170: | ||
9 30 |
9 30 |
||
10 38 |
10 38 |
||
=={{header|Wren}}== |
|||
{{trans|Go}} |
|||
{{libheader|Wren-fmt}} |
|||
<lang ecmascript>import "/fmt" for Fmt |
|||
var maxn = 10 |
|||
var maxl = 50 |
|||
var steps = Fn.new { |n| |
|||
var a = List.filled(maxl, null) |
|||
var b = List.filled(maxl, null) |
|||
var x = List.filled(maxl, 0) |
|||
for (i in 0...maxl) { |
|||
a[i] = List.filled(maxn + 1, 0) |
|||
b[i] = List.filled(maxn + 1, 0) |
|||
} |
|||
a[0][0] = 1 |
|||
var m = 0 |
|||
var l = 0 |
|||
while (true) { |
|||
x[l] = x[l] + 1 |
|||
var k = x[l] |
|||
var cont = false |
|||
if (k >= n) { |
|||
if (l <= 0) break |
|||
l = l - 1 |
|||
cont = true |
|||
} else if (a[l][k] == 0) { |
|||
if (b[l][k+1] != 0) cont = true |
|||
} else if (a[l][k] != k + 1) { |
|||
cont = true |
|||
} |
|||
if (!cont) { |
|||
a[l+1] = a[l].toList |
|||
var j = 1 |
|||
while (j <= k) { |
|||
a[l+1][j] = a[l][k-j] |
|||
j = j + 1 |
|||
} |
|||
b[l+1] = b[l].toList |
|||
a[l+1][0] = k + 1 |
|||
b[l+1][k+1] = 1 |
|||
if (l > m - 1) { |
|||
m = l + 1 |
|||
} |
|||
l = l + 1 |
|||
x[l] = 0 |
|||
} |
|||
} |
|||
return m |
|||
} |
|||
for (i in 1..maxn) Fmt.print("$2d: $d", i, steps.call(i))</lang> |
|||
{{out}} |
|||
<pre> |
|||
1: 0 |
|||
2: 1 |
|||
3: 2 |
|||
4: 4 |
|||
5: 7 |
|||
6: 10 |
|||
7: 16 |
|||
8: 22 |
|||
9: 30 |
|||
10: 38 |
|||
</pre> |
|||
=={{header|XPL0}}== |
=={{header|XPL0}}== |