Post about "스도쿠"

LaTeX으로 스도쿠 게임 만들기

누나때문에 스도쿠에 재미가 들려서 요 며칠 신나게 하고 있다.
지난 주에 누나가 누가 빨리 푸나 게임을 하자고 해서 누나, 여동생 그리고 나 이렇게 셋이서 스도쿠 게임을 했다.

게임이 내 핸드폰에 있었기 때문에 종이에 일일이 그려서 게임을 시작했다.
(3판에서 내가 2승. ㅋㅋㅋ)

게임을 끝내고 나니, 왠지 LaTeX으로 하면 스도쿠 게임도 만들 수 있을 것 같아 찾아보니, 역시 이미 관련 패키지가 있었다.

1. LaTeX:

TeX이라는 조판시스템의 매크로로서, 일반적으로 TeX이라면 LaTeX을 말하는 경우가 많다. 우리나라에서는 KTUG에 계신 분들이 한글 조판을 위해 꾸준히 개발을 해오신 덕분에 쉽게 한글문서를 조판할 수 있다. 특히 2008년에 개발된 KC2008은 TeX시스템과 관련 유틸리티, 한글을 위한 Ko.TeX 설치를 한방에 해주어 편리한 환경을 제공해 준다.

2. 패키지:

LaTeX에서는 다양한 확장 기능(또는 환경)등을 제공하는 패키지가 있다. 일종의 모듈이라고 생각하면 되는데, KC2008이나 TeXLive를 full 또는 기본설정으로 설치하였다면 왠만한 패키지는 이미 설치되었다. 스도쿠 게임을 위한 패키지 이름은 ‘createsudoku‘이다.

3. sudokubundle:

스도쿠 게임을 만들기 위한 스타일. 스도쿠 게임을 쉽게 만들어 준다.
스도쿠 게임을 만들기 위해서는 먼저 숫자가 기록된 파일이 필요하다. 빈 칸은 점(.), 숫자는 해당 숫자를 입력하면 된다. 아래 4번 항목을 참고.
이렇게 입력한 파일을 filename.sud 형식으로 저장한다. 일반 텍스트 파일이지만, 확장자가 sud인 것에 주의한다.

4. sud파일:

예를 보여주는 것이 빠를 것 같다.
스도쿠 게임은 9×9 이므로,
.1…3.25
.6.7..4..
.8……1
…9.2…
.58…21.
…6.5…
9……4.
..6..7.9.
53.2…8.
처럼 9×9로 만들고, 이를 example.sud로 저장한다. 이 때 인코딩은 UTF-8로 한다.

5. 명령어:

TeX이나 LaTeX 등에서 문서 조판을 위해 제공하는 명령어. 여기서는 스도쿠 게임을 위해 createsudoku라는 패키지에서 제공하는 3가지 기본 명령어만을 알아본다(자세한 명령과 옵션은 매뉴얼 참고).

  1) \sudoku{filename.sud}: filename.sud파일의 숫자를 이용, 문제를 조판한다.
  2) \sudokusolve{filename.sud}: filename.sud파일의 숫자를 이용, 문제와 해답을 함께 조판한다.
  3) \generategrid{filename.sud}: filename.sud파일을 기반으로 다른 문제와 해답을 함께 생성한다. sud파일을 지정해 주지 않으면, 임의의 문제를 만들어 조판한다.

6. latex 파일을 만들 차례다.

\documentclass{article}
\usepackage{createsudoku}
\begin{document}
\begin{center}
\sudokusolve{aaa.sud}
\end{center}
\end{document}

메모장 등의 에디트 프로그램에서 위처럼 작성한 후, example.tex으로 저장한다. 영문밖에 없긴 하지만 UTF-8로 저장한다. 10번째 줄 이후는 아무 영향을 미치지 않으니 아무 글자나 입력해도 상관없다.

7. 위에서 만든 example.tex파일을 컴파일 한다.

컴파일은 KC2008이나 TeXLive 등이 설치된 상태에서, 명령 프롬프트에서
pdflatex example.tex
으로 하거나,

latex example.tex” 명령 후, 다시 “dvipdfmx example.dvi“을 실행하면
우리가 원하던 example.pdf을 얻을 수 있다.
명령 프롬프트를 통해 직접 입력하는 것이 어렵다면 KC2008에서 제공하는 KCMenu라는 프로그램을 이용하면 된다.

예제파일 다운로드: 5788356902.zip

왠지 있을 것 같은 기대감에 찾아보긴 했지만, 진짜 이렇게 떡~하니 있을 줄이야…
작년 가을쯤인가 강컴과 Yes24에서 The TeXBook 원서 50%세일할 때 살 걸… 하는 후회가 요즘 밀려들고 있다.
(근데 왜 동시에 50% 세일을 했을까…?)