51 lines
873 B
Text
51 lines
873 B
Text
Module FastLatinSquare {
|
|
n=5
|
|
For k=1 To 2
|
|
latin()
|
|
Next
|
|
n=40
|
|
latin()
|
|
Sub latin()
|
|
Local i,a, a(1 To n), b, k
|
|
Profiler
|
|
flush
|
|
Print "latin square ";n;" by ";n
|
|
For i=1 To n
|
|
Push i
|
|
Next i
|
|
For i=1 To n div 2
|
|
Shiftback random(2, n)
|
|
Next i
|
|
a=[]
|
|
Push ! stack(a)
|
|
a=array(a) ' change a from stack to array
|
|
For i=1 To n*10
|
|
Shiftback random(2, n)
|
|
Next i
|
|
For i=0 To n-1
|
|
Data number ' rotate by one the stack items
|
|
b=[] ' move stack To b, leave empty stack
|
|
a(a#val(i))=b
|
|
Push ! stack(b) ' Push from a copy of b all items To stack
|
|
Next i
|
|
flush
|
|
For k=1 To n div 2
|
|
z=random(2, n)
|
|
For i=1 To n
|
|
a=a(i)
|
|
stack a {
|
|
shift z
|
|
}
|
|
Next
|
|
Next
|
|
For i=1 To n
|
|
a=a(i)
|
|
a(i)=array(a) ' change To array from stack
|
|
Next i
|
|
For i=1 To n
|
|
Print a(i)
|
|
Next i
|
|
Print TimeCount
|
|
End Sub
|
|
}
|
|
FastLatinSquare
|