스도쿠(数独, Sudoku) - Helper

rss
예전에 스도쿠와 관련해 몇 개의 글을 남겼는데요(개요와 규칙, 풀이 예제 1, 풀이 예제 2), 이번에는 스도쿠 풀이를 돕는 보조 도구를 소개해 드릴까 합니다. 바로 스도쿠 헬퍼(Sudoku Helper)라고 이름 붙인 녀석입니다. 혹시라도 필요하신 분이 계시면 받아 가세요. ^ㅇ^


스도쿠 헬퍼를 만들게 된 동기는 단순합니다. 휴대폰이나 컴퓨터 등으로 스도쿠를 하는 경우, 대개는 각 칸에 들어갈 값에 대한 힌트를 작성할 수 있도록 하는 기능이 있습니다. 보통 아래 그림과 같이 보이게 됩니다.


하지만 그렇지 않은 경우, 그러니까 직접 신문이나 책 등을 통해서 게임을 해야 할 땐 이걸 손으로 일일이 기록하며 하는 일이 너무나 귀찮고 힘들다는 것이죠. 그래서 손으로 하는 수고로움을 조금이라도 덜 도구를 마이크로소프트(Microsoft)의 엑셀(Excel)을 이용하여 만들었습니다. 엑셀의 수식 기능을 이용한 것이죠.

물론 스도쿠 퍼즐을 아예 풀어 주는 프로그램도 있기는 한데, 그러면 손맛(?)이 떨어지잖아요. ㅎㅎ (스도쿠 퍼즐의 해법은 A Pencil-and-Paper Algorithm for Solving Sudoku PuzzlesSudoku Programming by keetekee 등에 잘 나와 있습니다.)

파일을 열면 다음과 같이 두 개의 테이블이 보입니다. 왼쪽 테이블은 퍼즐 자체의 값이 들어가는 칸을 보여 주고 오른쪽 테이블은 각 칸(셀)마다 후보가 되는 숫자들의 모임을 보여 주고 있습니다.

왼쪽 테이블에 간단한 스도쿠 문제를 입력해 보겠습니다. 그러면 오른쪽 테이블에는 각 칸(셀)마다 어떤 숫자가 후보가 될 수 있는지를 보여 줍니다.

만약 어떤 칸에 들어갈 후보 숫자가 하나 뿐이라면 그게 바로 답이죠. 다음 그림의 빨간색 칸(셀)이 바로 그런 경우를 보여 줍니다. 제가 엑셀 파일에 수식을 적용할 때 가장 간단한 알고리즘(Naked Single)만 찾을 수 있도록 해 두었기 때문에, 그림의 파란색 칸(셀)의 4처럼 실제로는 블럭 내에 후보가 단 하나만 존재하지만 그걸 표현하지 못하는 경우도 있습니다.

어쨌거나 그런 과정을 거쳐 모든 숫자를 다 입력하면 왼쪽 테이블은 가득 차고 오른쪽 테이블은 완전히 비게 됩니다. “빨래 끝~!”이 아니고 “풀이 끝~!&rdquo.


다만, 이 파일에는 가장 기본적인 룰(Naked Single)만 적용시켜 놓았기 때문에 고난이도의 트릭까지 찾아 내지는 못하며, 왼쪽 테이블에 잘못된 값을 집어 넣더라도 그 결과가 제대로 된 것인지 알려 주지 않는다는 점은 주의하셔야 합니다.


Posted by EXIFEEDI

댓글을 달아 주세요