Skip to content

Commit 98c9423

Browse files
author
KaranMishra3610
committed
Refactor: Apply Iterator pattern to SudokuBoard
1 parent f201c31 commit 98c9423

File tree

1 file changed

+85
-0
lines changed

1 file changed

+85
-0
lines changed
Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
package sudoku;
2+
3+
import java.util.Iterator;
4+
import java.util.NoSuchElementException;
5+
6+
/**
7+
* Represents a Sudoku board with support for iteration using the Iterator pattern.
8+
*/
9+
public class SudokuBoard implements Iterable<SudokuBoard.Cell> {
10+
11+
private final int[][] board;
12+
private final int size;
13+
14+
public SudokuBoard(int size) {
15+
this.size = size;
16+
this.board = new int[size][size];
17+
}
18+
19+
public int getSize() {
20+
return size;
21+
}
22+
23+
public int getValue(int row, int col) {
24+
return board[row][col];
25+
}
26+
27+
public void setValue(int row, int col, int value) {
28+
board[row][col] = value;
29+
}
30+
31+
/** Represents a single cell in the Sudoku board */
32+
public static class Cell {
33+
private final int row;
34+
private final int col;
35+
private final int value;
36+
37+
public Cell(int row, int col, int value) {
38+
this.row = row;
39+
this.col = col;
40+
this.value = value;
41+
}
42+
43+
public int getRow() {
44+
return row;
45+
}
46+
47+
public int getCol() {
48+
return col;
49+
}
50+
51+
public int getValue() {
52+
return value;
53+
}
54+
}
55+
56+
/** Iterator implementation for Sudoku board cells */
57+
private class CellIterator implements Iterator<Cell> {
58+
private int row = 0;
59+
private int col = 0;
60+
61+
@Override
62+
public boolean hasNext() {
63+
return row < size && col < size;
64+
}
65+
66+
@Override
67+
public Cell next() {
68+
if (!hasNext()) {
69+
throw new NoSuchElementException();
70+
}
71+
Cell cell = new Cell(row, col, board[row][col]);
72+
col++;
73+
if (col == size) {
74+
col = 0;
75+
row++;
76+
}
77+
return cell;
78+
}
79+
}
80+
81+
@Override
82+
public Iterator<Cell> iterator() {
83+
return new CellIterator();
84+
}
85+
}

0 commit comments

Comments
 (0)