JS 스도쿠 생성기를 연습용 TS 생성기로 성공적으로 변환했습니다. 유일한 문제는 완전한 스도쿠 보드만 출력하도록 하는 방법입니다. 이제는 디스크 완성 여부와 관계없이 출력이 되는데, 올바른 디스크가 나타날 때까지 새로고침을 해야 합니다.
전체 디스크만 출력하도록 다음 함수를 작성하는 방법을 잘 모르겠습니다.
으아악이것이 내 코드입니다:
function fillBoard(puzzleArray: number[][]): number[][] { if (nextEmptyCell(puzzleArray).colIndex === -1) return puzzleArray; let emptyCell = nextEmptyCell(puzzleArray); for (var num in shuffle(numArray)) { if (safeToPlace(puzzleArray, emptyCell, numArray[num])) { puzzleArray[emptyCell.rowIndex][emptyCell.colIndex] = numArray[num]; fillBoard(puzzleArray); } } return puzzleArray; }
빈 셀에 유효한 숫자를 추가할 수 없는 경우 이 함수는 불완전한 스도쿠 보드를 반환합니다.
이 문제를 해결하려면 함수가 다음을 수행해야 합니다.
puzzleArray
를 반환할 필요가 없습니다.NEW_BOARD = fillBoard(BLANK_BOARD);
的副作用是NEW_BOARD
和BLANK_BOARD
동일한 스도쿠 보드를 참조하며 더 이상 비어 있지 않음을 의미합니다(따라서 이름이 오해의 소지가 있음).다음은 수정된 구현입니다.
으아악발신자가 반환 값을 확인해야 하지만, 백지 상태에서 시작하면
으아악true
가 반환 값으로 보장됩니다. 그러면 이렇게 할 수 있습니다: