class Grid extends Component {
constructor() {
super();
this.state = {
grid: [
[8, 9, 0, 0, 0, 0, 0, 0, 4],
[0, 3, 0, 0, 9, 1, 0, 0, 7],
[5, 0, 0, 2, 3, 4, 0, 9, 0],
[9, 0, 0, 0, 0, 0, 3, 0, 0],
[0, 4, 5, 0, 1, 0, 0, 7, 0],
[6, 0, 0, 0, 4, 0, 0, 1, 0],
[0, 8, 9, 0, 5, 0, 0, 2, 0],
[0, 2, 0, 0, 8, 0, 0, 0, 0],
[4, 0, 6, 0, 0, 0, 7, 0, 0]
]
};
}
render() {
return (
<table className="grid">
<tbody>
{
this.state.grid.map((row, rowIndex) => (
<tr key = { rowIndex }>
{
row.map((item, itemIndex) => (
<td key = { itemIndex } className="grid-item">{ item !== 0 ? item : <input className="grid-input" type="text"/> }</td>
))
}
</tr>
))
}
</tbody>
</table>
);
}
}
Делаю судоку на реакте. Как лучше реализовать проверку условий того, что введенное значение в ячейке не будет повторяться в строке в столбце и в блоке 3x3?
Как проверять строки и столбы вроде как на словах понятно, нужно просто взять координаты вводимого числа (не понятно как), и пройтись в цикле по столбцу и строке пересекающих эту координату.
А вот как проверить блок 3x3 при такой модели состояния, непонятно.
Пытался нагуглить, но самостоятельно разобраться в простыне кода не могу.
В общем подскажите и поясните пожалуйста на пальцах как реализовать проверку условий в данной головоломке.