2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
# File 'lib/rudoku.rb', line 2
def initialize(sudoku)
@n = sudoku.size
@sqrt_n = Math.sqrt(@n).to_i
raise "wrong sudoku size" unless @sqrt_n * @sqrt_n == @n
@arr = sudoku.collect { |row|
(0...@n).collect { |i|
((1..@n) === row[i]) ? [row[i]] : (1..@n).to_a
}
}
@rfix = Array.new(@n) { [] }
@cfix = Array.new(@n) { [] }
@bfix = Array.new(@n) { [] }
@n.times { |r| @n.times { |c| update_fix(r, c) } }
[@rfix, @cfix, @bfix].each { |fix| fix.each { |x|
unless x.size == x.uniq.size
raise "non-unique numbers in row, col or box"
end
} }
end
|