Added typedef for SudokuStates
Removed unnecessary parameter
This commit is contained in:
parent
367e12fe7b
commit
cd18662fed
@ -21,20 +21,24 @@ function randInt(min, max) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class SudokuPuzzle extends EventTarget {
|
class SudokuPuzzle extends EventTarget {
|
||||||
|
/**
|
||||||
|
* @typedef {(number|null|undefined)[]} SudokuState
|
||||||
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @type {(number|null)[][]}
|
* @type {SudokuState[]}
|
||||||
*/
|
*/
|
||||||
#state = []
|
#state = []
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @type {(number|null|undefined)[]}
|
* @type {SudokuState}
|
||||||
*/
|
*/
|
||||||
#activeState = new Array(SUDOKU_GRID_SIZE)
|
#activeState = new Array(SUDOKU_GRID_SIZE)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @returns {(number|null|undefined)[]}
|
* @returns {SudokuState}
|
||||||
*/
|
*/
|
||||||
get grid() {
|
get grid() {
|
||||||
const gridValue = [...this.#activeState]
|
const gridValue = [...this.#activeState]
|
||||||
@ -61,7 +65,7 @@ class SudokuPuzzle extends EventTarget {
|
|||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @param serializedState {string}
|
* @param serializedState {string}
|
||||||
* @returns {((number|null|undefined))[]}
|
* @returns {SudokuState}
|
||||||
*/
|
*/
|
||||||
static #stateFromString(serializedState) {
|
static #stateFromString(serializedState) {
|
||||||
let cellIndex = 0
|
let cellIndex = 0
|
||||||
@ -86,7 +90,7 @@ class SudokuPuzzle extends EventTarget {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @param stateToSample {(number|null|undefined)[]}
|
* @param stateToSample {SudokuState}
|
||||||
* @returns {undefined|number}
|
* @returns {undefined|number}
|
||||||
*/
|
*/
|
||||||
#sampleRandomEmptyField(stateToSample = this.#activeState) {
|
#sampleRandomEmptyField(stateToSample = this.#activeState) {
|
||||||
@ -98,7 +102,7 @@ class SudokuPuzzle extends EventTarget {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @param states {...(number|null|undefined)[][]}
|
* @param states {...SudokuState[]}
|
||||||
*/
|
*/
|
||||||
static collapseStates(...states) {
|
static collapseStates(...states) {
|
||||||
return Array.from({ length: SUDOKU_GRID_SIZE }, (_, i) => {
|
return Array.from({ length: SUDOKU_GRID_SIZE }, (_, i) => {
|
||||||
@ -113,7 +117,7 @@ class SudokuPuzzle extends EventTarget {
|
|||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @param slot {number}
|
* @param slot {number}
|
||||||
* @param state {(number|null|undefined)[]}
|
* @param state {SudokuState}
|
||||||
* @return {Set<number>}
|
* @return {Set<number>}
|
||||||
*/
|
*/
|
||||||
#boxGetValues(slot, state = this.#activeState) {
|
#boxGetValues(slot, state = this.#activeState) {
|
||||||
@ -137,7 +141,7 @@ class SudokuPuzzle extends EventTarget {
|
|||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @param slot {number}
|
* @param slot {number}
|
||||||
* @param state {(number|null|undefined)[]}
|
* @param state {SudokuState}
|
||||||
* @return {Set<number>}
|
* @return {Set<number>}
|
||||||
*/
|
*/
|
||||||
#crossGetValues(slot, state = this.#activeState) {
|
#crossGetValues(slot, state = this.#activeState) {
|
||||||
@ -176,7 +180,7 @@ class SudokuPuzzle extends EventTarget {
|
|||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @param slot {number}
|
* @param slot {number}
|
||||||
* @param state {(number|null|undefined)[]}
|
* @param state {SudokuState}
|
||||||
* @return {Set<number>}
|
* @return {Set<number>}
|
||||||
*/
|
*/
|
||||||
getValues(slot, state = this.#activeState) {
|
getValues(slot, state = this.#activeState) {
|
||||||
@ -189,7 +193,7 @@ class SudokuPuzzle extends EventTarget {
|
|||||||
*
|
*
|
||||||
* @param value {number}
|
* @param value {number}
|
||||||
* @param slot {number}
|
* @param slot {number}
|
||||||
* @param state {(number|null|undefined)[]}
|
* @param state {SudokuState}
|
||||||
* @return boolean
|
* @return boolean
|
||||||
*/
|
*/
|
||||||
isValueValidForSlot(value, slot, state = this.#activeState) {
|
isValueValidForSlot(value, slot, state = this.#activeState) {
|
||||||
@ -200,7 +204,7 @@ class SudokuPuzzle extends EventTarget {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @param newState {(number|null|undefined)[]}
|
* @param newState {SudokuState}
|
||||||
*/
|
*/
|
||||||
fillRandomFieldInState(newState = Array.from({ length: SUDOKU_GRID_SIZE })) {
|
fillRandomFieldInState(newState = Array.from({ length: SUDOKU_GRID_SIZE })) {
|
||||||
const inProgressState = SudokuPuzzle.collapseStates(
|
const inProgressState = SudokuPuzzle.collapseStates(
|
||||||
@ -222,7 +226,7 @@ class SudokuPuzzle extends EventTarget {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @returns {(number|null|undefined)[]}
|
* @returns {SudokuState}
|
||||||
*/
|
*/
|
||||||
#generateRandomState() {
|
#generateRandomState() {
|
||||||
const newState = Array.from({ length: SUDOKU_GRID_SIZE })
|
const newState = Array.from({ length: SUDOKU_GRID_SIZE })
|
||||||
@ -235,7 +239,7 @@ class SudokuPuzzle extends EventTarget {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @returns {(number|null|undefined)[]}
|
* @returns {SudokuState}
|
||||||
*/
|
*/
|
||||||
get baseState() {
|
get baseState() {
|
||||||
return this.#state[0]
|
return this.#state[0]
|
||||||
@ -253,7 +257,7 @@ class SudokuPuzzle extends EventTarget {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @param newState {(number|null|undefined)[]}
|
* @param newState {SudokuState}
|
||||||
*/
|
*/
|
||||||
applyState(newState) {
|
applyState(newState) {
|
||||||
this.#state.push(newState)
|
this.#state.push(newState)
|
||||||
@ -367,7 +371,7 @@ class SudokuHost extends HTMLElement {
|
|||||||
})
|
})
|
||||||
|
|
||||||
this.#keyProcessors.set("m", () => {
|
this.#keyProcessors.set("m", () => {
|
||||||
for (const [_, cell] of this.#selectedCells) {
|
for (const [, cell] of this.#selectedCells) {
|
||||||
cell.classList.toggle("marked")
|
cell.classList.toggle("marked")
|
||||||
cell.classList.remove("selected")
|
cell.classList.remove("selected")
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user