퀸도쿠는 스도쿠처럼 규칙을 소거법으로 좁혀가는 퍼즐입니다. 어디서부터 손대야 할지만 알면 훨씬 수월하게 풀립니다.
좁게 몰려 있는 색상 영역부터 채우세요
각 행·열·색상 영역에 정확히 퀸이 하나씩 있어야 합니다. 색상 영역이 넓게 퍼져 있으면 후보 자리가 많지만, 좁게 몰려 있는 영역은 놓을 수 있는 자리가 자연히 적어 먼저 확정하기 쉽습니다. 이런 영역부터 채워나가면 다른 행·열의 후보도 함께 줄어드는 연쇄 효과를 얻을 수 있습니다.
X 메모로 "여기는 안 된다"를 먼저 지우세요
클릭 한 번은 X 표시를 켜고 끄는 메모 기능입니다. 확신을 갖고 퀸을 놓기 전에, 대각선으로 맞닿거나 같은 행·열·영역에 이미 퀸이 있어 놓을 수 없는 칸부터 X로 표시해두면 남은 후보가 눈에 띄게 줄어듭니다. 더블클릭으로 퀸을 놓는 것은 후보가 확실해진 다음에 하는 것이 안전합니다.
대각선 규칙을 항상 함께 확인하세요
어떤 두 퀸도 상하좌우는 물론 대각선으로도 서로 맞닿아 있으면 안 됩니다(단, 두 칸 이상 떨어져 있으면 같은 대각선이어도 괜찮습니다). 행·열·영역 규칙만 확인하고 대각선 규칙을 깜빡하는 실수가 잦으니, 퀸을 놓기 전 바로 옆 대각선 칸까지 항상 함께 확인하는 습관을 들이세요.
막히면 힌트로 소거법을 이어가세요
힌트 버튼을 누르면 퀸이 놓일 수 없는 칸 하나를 X로 표시해줍니다(퍼즐마다 제한 횟수, 목숨 소모 없음). 정답을 바로 알려주지 않고 소거법으로 스스로 풀 수 있게 도와주는 방식이니, 막혔을 때는 정답을 유추하기보다 힌트로 후보를 하나씩 줄여나가세요. 이 퍼즐은 브라우저에서 직접 유일해 검증을 거쳐 생성되므로, 항상 하나의 정답만 존재합니다.
이렇게 만들었습니다
퍼즐은 두 단계로 생성됩니다. 먼저 백트래킹으로 규칙(행·열·색상 영역·대각선 비인접)을 만족하는 퀸 배치를 하나 찾고, 그 배치를 정답으로 하는 색상 영역을 역으로 자라나게(growRegions) 만듭니다. 그다음이 핵심인데, 그 영역판에서 실제로 정답이 몇 개인지 다시 백트래킹으로 세어봅니다(최대 2개까지만 세고 멈추는 최적화를 씁니다 - 2개 이상이면 어차피 "유일하지 않음"으로 버릴 것이므로 3개째부터는 셀 필요가 없습니다). 정답이 정확히 1개로 확인된 판만 채택하고, 아니면 처음부터 다시 시도합니다. 매번 실패할 수 있으므로 시도 횟수에 상한을 두고, 그래도 유일해를 못 찾으면 정답이 여러 개라도 일단 풀 수는 있는 판을 대신 내보냅니다.