Skip to content

Commit d18f593

Browse files
committed
36
1 parent a5ce710 commit d18f593

File tree

1 file changed

+48
-0
lines changed

1 file changed

+48
-0
lines changed

ruby/36-Valid-Sudoku.rb

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
def is_valid_sudoku(board)
2+
valid_rows_and_columns?(board) && valid_boxes?(board)
3+
end
4+
5+
def valid_rows_and_columns?(board)
6+
(0...9).each do |y|
7+
column = []
8+
row = []
9+
(0...9).each do |x|
10+
row << board[y][x]
11+
column << board[x][y]
12+
end
13+
return false unless valid?(row) && valid?(column)
14+
end
15+
true
16+
end
17+
18+
def valid?(row)
19+
hash = {}
20+
row.each do |cell|
21+
next if cell == '.'
22+
return false if hash.key? cell
23+
24+
hash[cell] = true
25+
end
26+
27+
true
28+
end
29+
30+
def valid_boxes?(board)
31+
y_cap = 0
32+
until y_cap == 9
33+
x_cap = 0
34+
until x_cap == 9
35+
box = []
36+
(y_cap...(y_cap + 3)).each do |y|
37+
(x_cap...(x_cap + 3)).each do |x|
38+
box << board[y][x]
39+
end
40+
return false unless valid?(box)
41+
end
42+
x_cap += 3
43+
end
44+
y_cap += 3
45+
end
46+
47+
true
48+
end

0 commit comments

Comments
 (0)