File tree Expand file tree Collapse file tree 1 file changed +48
-0
lines changed Expand file tree Collapse file tree 1 file changed +48
-0
lines changed Original file line number Diff line number Diff line change
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
You can’t perform that action at this time.
0 commit comments