알고리즘을 설명하기 위해, 우리는 크룩이 자신의 논문에서 설명하는 아래 (어려운) 스도쿠를 해결합니다. 퍼즐 자체는 마이클 Mepham에 의해 책 “스도쿠 해결”에서입니다 (참조 참조). 무차별 암호 대입 알고리즘은 빈 셀을 순서대로 방문하여 숫자를 순차적으로 채우거나 번호가 유효하지 않은 것으로 판명되면 역추적합니다. [3] [4] [5] [6] 간단히, 프로그램은 첫 번째 셀에 숫자 “1”을 배치하고 거기에 있을 수 있는지 확인하여 퍼즐을 해결할 것입니다. 위반(행, 열 및 상자 제약 조건 확인)이 없는 경우 알고리즘은 다음 셀로 이동하여 해당 셀에 “1”을 배치합니다. 위반을 확인할 때 “1”이 허용되지 않는 것으로 확인되면 값이 “2”로 진행됩니다. 9자리 중 어느 자리도 허용되지 않는 셀이 발견되면 알고리즘은 해당 셀을 비워 두고 이전 셀로 다시 이동합니다. 그런 다음 해당 셀의 값이 하나씩 증가합니다. 이는 마지막(81번째) 셀에서 허용된 값이 발견될 때까지 반복됩니다. 게임 해결 알고리즘을 프로그래밍할 때 가장 먼저 해야 할 일은 게임 자체를 정의하는 것입니다. 우선, 우리는 스도쿠 그리드와 그것을 인쇄 하는 기본 기능을 설정 합니다.

실제 그리드와 인쇄 방법을 정의하려면 기본 전역 변수가 필요합니다. 아래 코드 조각에서 이 작업을 수행합니다. 당연히 스도쿠 그리드는 크기가 9×9인 정수 형식의 2D 배열로 정의합니다. 또한 정수 값 0으로 BLANK 셀을 정의합니다. 따라서 초기 스도쿠 그리드를 만들 때 그리드에서 공백으로 시작하는 셀은 0으로 채워집니다. 이 문제 해결 방법은 인간에게 매우 보람이 있을 수 있지만 오류가 발생하기 쉽고 느립니다. Sudoku 솔루션에 대한 매우 간단한 규칙 집합은 솔루션의 정의를 간단하게 만들어 컴퓨터에서 쉽게 해결할 수 있도록 합니다. 우리는 우리를 위해이 모든 노력을 할 수있는 컴퓨터를 얻기 위해 재귀 역추적 알고리즘을 적용합니다. 컴퓨터 과학에서 내가 가장 좋아하는 알고리즘 유형 중 하나는 재귀 역추적입니다. 놀랍게 간단한 절차를 따르면 부기 없이 적절한 시간 내에 복잡한 문제를 해결할 수 있습니다.

스도쿠는 역추적에 대항하도록 구성될 수 있습니다. 솔버가 위에서 아래로 작동한다고 가정하면 (애니메이션에서와 같이) 단서가 거의없는 퍼즐 (17), 맨 위 행에 단서가 없으며 첫 번째 행에 대한 해결책 “987654321”이 알고리즘에 반대하여 작동합니다. 따라서 이 프로그램은 퍼즐을 조정 그리드에 도착하기 전에 위쪽으로 “계산”상당한 시간을 보낼 것입니다. 한 경우, 프로그래머는 2008 년 시대의 컴퓨터를 사용하지만 이러한 스도쿠솔루션에 도달하는 데 6 시간이 걸리는 무차별 대입 프로그램을 발견했습니다. 이러한 스도쿠는 철저한 검색 루틴과 빠른 프로세서를 사용하여 30 초 이내에 요즘 해결 될 수있다. [인용 필요] 대부분의 인간이 이러한 퍼즐을 해결하는 방법에 대해 가는 방법은 논리를 사용하는 것입니다. 그리드에있는 숫자의 위치를 주의 깊게 검사하여 게임의 규칙을 사용하여 모든 가능성을 제거 할 수 있지만 하나는 올바른 숫자여야합니다. 예를 들어 위의 퍼즐에서 상위 중간 섹터에 7이 있어야한다는 것을 알고 있습니다. 열 5에는 7이 있고 열 6에는 1이 있으므로 상위 중간 섹터의 열 4에 7이 있다고 추론할 수 있습니다.