Random Latin squares: Difference between revisions

Content deleted Content added
m formatting
Steenslag (talk | contribs)
Line 450: Line 450:
4 10 9 0 3 7 2 5 1 11 6 8
4 10 9 0 3 7 2 5 1 11 6 8
0 6 11 9 1 3 5 10 2 7 8 4</pre>
0 6 11 9 1 3 5 10 2 7 8 4</pre>

=={{header|Ruby}}==
<lang ruby>N = 5

def generate_square
perms = (1..N).to_a.permutation(N).to_a.shuffle
square = []
N.times do
square << perms.pop
perms.reject!{|perm| perm.zip(square.last).any?{|el1, el2| el1 == el2} }
end
square
end

def print_square(square)
cell_size = N.digits.size + 1
strings = square.map!{|row| row.map!{|el| el.to_s.rjust(cell_size)}.join }
puts strings, "\n"
end

2.times{print_square( generate_square)}
</lang>
{{out}}<pre>
3 4 2 1 5
2 3 4 5 1
1 2 5 3 4
5 1 3 4 2
4 5 1 2 3

1 2 5 4 3
2 3 4 1 5
5 4 2 3 1
3 5 1 2 4
4 1 3 5 2

</pre>


=={{header|zkl}}==
=={{header|zkl}}==