20 lines
427 B
Ruby
20 lines
427 B
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)}
|