Data update
This commit is contained in:
parent
0df55f9f24
commit
aec8ed51b6
1045 changed files with 18889 additions and 2777 deletions
|
|
@ -0,0 +1,75 @@
|
|||
Randomize Timer
|
||||
|
||||
Sub printSquare(latin() As Integer, n As Integer)
|
||||
For i As Integer = 0 To n - 1
|
||||
Print "[";
|
||||
For j As Integer = 0 To n - 1
|
||||
Print latin(i, j); ",";
|
||||
Next j
|
||||
Print Chr(8); " ]"
|
||||
Next i
|
||||
Print
|
||||
End Sub
|
||||
|
||||
Sub latinSquare(n As Integer)
|
||||
Dim As Integer i, j, k
|
||||
|
||||
If n <= 0 Then
|
||||
Print "[]"
|
||||
Exit Sub
|
||||
End If
|
||||
Dim latin(n - 1, n - 1) As Integer
|
||||
For i = 0 To n - 1
|
||||
For j = 0 To n - 1
|
||||
latin(i, j) = j
|
||||
Next j
|
||||
Next i
|
||||
|
||||
' first row
|
||||
For i = 0 To n - 1
|
||||
Dim j As Integer = Int(Rnd * n)
|
||||
Swap latin(0, i), latin(0, j)
|
||||
Next i
|
||||
|
||||
' middle row(s)
|
||||
For i = 1 To n - 2
|
||||
Dim shuffled As Integer = 0
|
||||
While shuffled = 0
|
||||
For j = 0 To n - 1
|
||||
Dim k As Integer = Int(Rnd * n)
|
||||
Swap latin(i, j), latin(i, k)
|
||||
Next j
|
||||
shuffled = 1
|
||||
For k As Integer = 0 To i - 1
|
||||
For j = 0 To n - 1
|
||||
If latin(k, j) = latin(i, j) Then
|
||||
shuffled = 0
|
||||
Exit For
|
||||
End If
|
||||
Next j
|
||||
If shuffled = 0 Then Exit For
|
||||
Next k
|
||||
Wend
|
||||
Next i
|
||||
|
||||
' last row
|
||||
For j = 0 To n - 1
|
||||
Dim used(n - 1) As Integer
|
||||
For i = 0 To n - 2
|
||||
used(latin(i, j)) = 1
|
||||
Next i
|
||||
For k = 0 To n - 1
|
||||
If used(k) = 0 Then
|
||||
latin(n - 1, j) = k
|
||||
Exit For
|
||||
End If
|
||||
Next k
|
||||
Next j
|
||||
printSquare(latin(), n)
|
||||
End Sub
|
||||
|
||||
latinSquare(5)
|
||||
latinSquare(5)
|
||||
latinSquare(10) ' for good measure
|
||||
|
||||
Sleep
|
||||
Loading…
Add table
Add a link
Reference in a new issue