Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
47
Task/Topswops/FreeBASIC/topswops.basic
Normal file
47
Task/Topswops/FreeBASIC/topswops.basic
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
Dim Shared As Byte n, d, best(16)
|
||||
|
||||
Sub TrySwaps(A() As Byte, f As Byte, s As Byte)
|
||||
Dim As Byte B(16), i, j, k
|
||||
If d > best(n) Then best(n) = d
|
||||
Do
|
||||
If A(s) = -1 Or A(s) = s Then Exit Do
|
||||
If d+best(s) <= best(n) Then Exit Sub
|
||||
If s = 0 Then Exit Do
|
||||
s -= 1
|
||||
Loop
|
||||
|
||||
d += 1
|
||||
For i = 0 To s
|
||||
B(i) = A(i)
|
||||
Next
|
||||
|
||||
k = 1
|
||||
For i = 1 To s
|
||||
k Shl= 1
|
||||
If B(i) =- 1 AndAlso (f And k) = 0 Or B(i) = i Then
|
||||
j = i
|
||||
B(0) = j
|
||||
While j
|
||||
j -= 1
|
||||
B(i-j) = A(j)
|
||||
Wend
|
||||
TrySwaps(B(), f Or k, s)
|
||||
End If
|
||||
Next
|
||||
d -= 1
|
||||
End Sub
|
||||
|
||||
Dim As Byte i, X(16)
|
||||
For i = 0 To 16-1
|
||||
X(i) = -1
|
||||
best(i) = 0
|
||||
Next i
|
||||
X(0) = 0
|
||||
|
||||
For n = 1 To 13
|
||||
d = 0
|
||||
TrySwaps(X(), 1, n-1)
|
||||
Print Using "##: ##"; n; best(n)
|
||||
Next n
|
||||
|
||||
Sleep
|
||||
Loading…
Add table
Add a link
Reference in a new issue