44 lines
777 B
Text
44 lines
777 B
Text
proc shuffle &a[] .
|
|
for i = len a[] downto 2
|
|
r = random 1 i
|
|
swap a[r] a[i]
|
|
.
|
|
.
|
|
proc prsquare &lat[][] .
|
|
n = len lat[][]
|
|
for i to n
|
|
for j to n : write lat[i][j] & " "
|
|
print ""
|
|
.
|
|
print ""
|
|
.
|
|
proc square n .
|
|
for i to n
|
|
lat[][] &= [ ]
|
|
for j to n : lat[i][] &= j
|
|
.
|
|
shuffle lat[1][]
|
|
for i = 2 to n - 1
|
|
repeat
|
|
shuffle lat[i][]
|
|
for k to i - 1 : for j to n
|
|
if lat[k][j] = lat[i][j] : break 2
|
|
.
|
|
until k = i
|
|
.
|
|
.
|
|
len used0[] n
|
|
for j to n
|
|
used[] = used0[]
|
|
for i to n - 1 : used[lat[i][j]] = 1
|
|
for k to n
|
|
if used[k] = 0
|
|
lat[n][j] = k
|
|
break 1
|
|
.
|
|
.
|
|
.
|
|
prsquare lat[][]
|
|
.
|
|
square 5
|
|
square 5
|