Topswops: Difference between revisions
Content added Content deleted
Thundergnat (talk | contribs) (→{{header|Raku}}: Add alternate version) |
Alextretyak (talk | contribs) (Added 11l) |
||
Line 38: | Line 38: | ||
* [[Sorting algorithms/Pancake sort]] |
* [[Sorting algorithms/Pancake sort]] |
||
<br><br> |
<br><br> |
||
=={{header|11l}}== |
|||
{{trans|Python:_Faster_Version}} |
|||
<lang 11l>V best = [0] * 16 |
|||
F try_swaps(&deck, f, =s, d, n) |
|||
I d > :best[n] |
|||
:best[n] = d |
|||
V i = 0 |
|||
V k = 1 << s |
|||
L s != 0 |
|||
k >>= 1 |
|||
s-- |
|||
I deck[s] == -1 | deck[s] == s |
|||
L.break |
|||
i [|]= k |
|||
I (i [&] f) == i & d + :best[s] <= :best[n] |
|||
R d |
|||
s++ |
|||
V deck2 = copy(deck) |
|||
k = 1 |
|||
L(i2) 1 .< s |
|||
k <<= 1 |
|||
I deck2[i2] == -1 |
|||
I (f [&] k) != 0 |
|||
L.continue |
|||
E I deck2[i2] != i2 |
|||
L.continue |
|||
deck[i2] = i2 |
|||
L(j) 0 .. i2 |
|||
deck2[j] = deck[i2 - j] |
|||
try_swaps(&deck2, f [|] k, s, 1 + d, n) |
|||
F topswops(n) |
|||
:best[n] = 0 |
|||
V deck0 = [-1] * 16 |
|||
deck0[0] = 0 |
|||
try_swaps(&deck0, 1, n, 0, n) |
|||
R :best[n] |
|||
L(i) 1..12 |
|||
print(‘#2: #.’.format(i, topswops(i)))</lang> |
|||
{{out}} |
|||
<pre> |
|||
1: 0 |
|||
2: 1 |
|||
3: 2 |
|||
4: 4 |
|||
5: 7 |
|||
6: 10 |
|||
7: 16 |
|||
8: 22 |
|||
9: 30 |
|||
10: 38 |
|||
11: 51 |
|||
12: 63 |
|||
</pre> |
|||
=={{header|360 Assembly}}== |
=={{header|360 Assembly}}== |