1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300
|
.\" Written by Michael Kennett, July 2005. This work, and all
.\" associated files, has been placed into the public domain
.\" and may be used freely by anybody for any purpose.
.TH SUDOKU 6
.SH NAME
sudoku \- sudoku board game
.SH SYNOPSIS
(play the game)
.RS
.B sudoku
.RI [ options "] ... "
.RI [ <filename> ]
.RE
.PP
(generate boards)
.RS
.B sudoku \-g
.RI [ <num> ]
.RI [ options "] ..."
.RE
.PP
(solve boards)
.RS
.B sudoku \-v
.RI [ options "] ..."
.RE
.PP
(calculate statistics)
.RS
.B sudoku \-s
.RI [ options "] ..."
.RE
.SH DESCRIPTION
The
.B sudoku
board game is played on a 9x9 grid, divided into rows, columns, and
9 blocks of 3x3 squares. The objective is to fill the empty squares
with the digits 1-9, so that each row, column, and block contains
each of the digits 1-9 (and hence, it is not possible for any digit to
appear twice in the same row, column or block).
.SH EXAMPLE
Consider the following board, and the squares marked `\fIa\fR'-`\fIh\fR'
and `\fIx\fR':
5 . \fIa\fR | 6 \fIb\fR 1 | . . . The digits appearing in each of the
7 9 . | . . . | \fIc\fR 6 8 squares `\fIa\fR'-`\fIh\fR' can be uniquely
\fId\fR 3 . | . 8 . | 7 . . determined. For example, the value
-------+-------+------- at `\fIa\fR' must be 8, since an 8 appears
. 5 . | 4 1 \fIe\fR | . . 2 in the other rows and columns of the
. . 1 | \fIf\fR \fIx\fR . | 6 . . block. Using similar logic, it must
8 . . | . 3 7 | . 4 . be true that:
-------+-------+------- \fIb\fR = 7 \fIf\fR = 8
. . 4 | . 9 . | \fIg\fR 2 . \fIc\fR = 1 \fIg\fR = 8
2 8 \fIh\fR | . . . | . 9 7 \fId\fR = 1 \fIh\fR = 5
. . . | 5 \fIi\fR 8 | . . 6 \fIe\fR = 6 \fIi\fR = 2
In contrast, it is not possible to uniquely determine the value of `\fIx\fR'
with the given information - it could take either the value 2 or 5.
.bp
The board now contains the squares:
5 . 8 | 6 7 1 | . . . It is now possible to determine the values
7 9 . | . . . | 1 6 8 appearing in other empty squares.
1 3 . | . 8 . | 7 . .
-------+-------+-------
. 5 . | 4 1 6 | . . 2
. . 1 | 8 \fIx\fR . | 6 . . <<< the value of \fIx\fR must now be 5.
8 . . | . 3 7 | . 4 .
-------+-------+-------
. . 4 | . 9 . | 8 2 .
2 8 5 | . . . | . 9 7
. . . | 5 2 8 | . . 6
Repeating this process a few more times reveals the solution:
5 4 8 | 6 7 1 | 2 3 9
7 9 2 | 3 4 5 | 1 6 8
1 3 6 | 9 8 2 | 7 5 4
-------+-------+-------
3 5 7 | 4 1 6 | 9 8 2
4 2 1 | 8 5 9 | 6 7 3
8 6 9 | 2 3 7 | 5 4 1
-------+-------+-------
6 1 4 | 7 9 3 | 8 2 5
2 8 5 | 1 6 4 | 3 9 7
9 7 3 | 5 2 8 | 4 1 6
.SH "GAME INTERFACE"
The
.B sudoku
game has a simple text interface (using the
.BR curses (3)
library). The board is displayed in the middle of the screen, along with
a summary of the allowed key presses. The cursor can be moved around the
board using the arrow keys or the standard
.BR vi (1)
movement keys, and each square (except for the fixed board squares that
are initially revealed) can be set to a given digit by pressing the
corresponding number key, or cleared by pressing either the `\fI0\fR' or
`\fI.\fR'
keys.
.SS "Generating a New Board"
A new board can be generated at any time by pressing the `\fIn\fR' key, and
either a \fIprecanned\fR or randomly generated board will be displayed.
If the \fB\-n\fR command line option is set, then only \fIprecanned\fR boards
will be displayed.
.SS "Entering a Custom Board"
A custom board (e.g. found on the internet, or published in a newspaper)
can be entered into the game by first clearing the current board (press
the `\fIc\fR' key), entering the published squares (using the cursor
motion keys and entering the appropriate numbers), and then fixing the
squares by pressing the `\fIf\fR' key. At this point, the entered squares
will be fixed (and cannot be changed).
.SS "Hints"
The interactive game provides a simple hint mechanism to provide
assistance in solving the board. It attempts to highlight areas of the
board where moves can be made. If repeated hints are requested, the
system starts revealing the digit that can be placed on the board.
A new hint can be requested by pressing the `\fI?\fR' key.
Often the hints can be quite cryptic. For example, consider the board
below:
v v v
. . 7 | . . \fB9\fR | . . .
\fB9\fR . \fB6\fR | 7 \fB4\fR . | . \fB1\fR \fB5\fR
. . \fB2\fR | \fB5\fR \fB1\fR . | . . .
-------+-------+-------
> \fB6\fR . \fB5\fR | . 7 . | . . \fB8\fR < \fIThe characters ><v^ highlight the\fR
> . \fB7\fR . | . . . | . \fB3\fR . < \fIarea of the hint\fR
> \fB8\fR . . | . . . | \fB7\fR . \fB6\fR <
-------+-------+-------
. . . | . \fB6\fR \fB7\fR | \fB8\fR . .
\fB7\fR \fB4\fR . | . \fB5\fR . | \fB9\fR 6 \fB2\fR
. 6 . | \fB4\fR . . | . . .
^ ^ ^
The system gives the hint `\fItry the digit 3\fR', but it is certainly not
obvious, with the revealed squares, where the 3 goes.
.SH OPTIONS
.TP
.BI \-c <class>
Generate a board until it finds a board of the specified class.
Supported classes are: very easy, easy, medium, hard, and fiendish.
.TP
.BI \-d
Describe the moves needed to solve the board. Can only be used with the
.B \-v
option for solving
.I precanned
boards.
.TP
.BI \-f <format>
Set output format. The supported formats are:
.ta 0.25i 1.25i
.nf
\fBstandard\fR Default text format; \fBstd\fR is a shortcut.
\fBcompact\fR Compact text format.
\fBcsv\fR Comma separated values, suitable for importing
into a spreadsheet.
\fBpostscript\fR \fBps\fR is a shortcut.
\fBhtml\fR Simple HTML.
.fi
.TP
.BI \-g "[<num>]"
Generate
.I <num>
boards (or just 1 board, if not specified) and write them to standard output.
.TP
.BI \-n
No random boards generated in the interactive game. Requires the optional
file of \fIprecanned\fR boards to be specified.
.TP
.BI \-r
Run in restricted mode, disallowing any games to be saved.
.TP
.BI \-s
Calculate statistics for the
.I precanned
boards, and attempt to classify
the difficulty of solving the boards. Can be used with the
.B \-v
option.
.TP
.BI \-t "<filename>"
Set the template file. The file set on the command line will be used
instead of the default template file.
.TP
.BI \-v
Solve
.I precanned
boards, writing the solution to standard output.
.TP
.I <filename>
Name of the optional file containing
.I precanned
boards.
.TP
.BI \-w
Write
.I default template
to the working directory if it doesn't exist yet.
.SH ENVIRONMENT
No environment variables are used directly by the
.B sudoku
program.
.SH FILES
.TP
.BI /usr/share/sudoku/template
Template file for generating new sudoku boards.
.TP
.BI /usr/share/sudoku/precanned
Optional file, containing `precanned' sudoku boards.
.SH "FILE FORMATS"
.SS /usr/share/sudoku/template
The template file contains a sequence of patterns that are used for
generating new
.B sudoku
boards. Each pattern is started by a line with a leading `%' character,
and consists of 9 lines of 9 characters. The character `.' represents a
square that is initially blank, and the character `*' represents a square
with a digit that is initially displayed.
.SS "Compact text format"
This format is similar to that of the template file, but contains
representations of game boards. Each board is started by a line with a
leading `%' character, followed by an optional title for the board that
is displayed when the game is played. This is followed by 9 lines of
9 characters, where the character `.' represents an initially empty square,
and the characters `1'-`9' give the value of a fixed board square that
is initially displayed. The
.B sudoku
program can read precanned files in this format, and will write them
when the
.B \-fcompact
option is set.
.SS "Standard text format"
This format is very similar to the compact text format, but includes
additional characters to delimit the blocks in the board. The
.B sudoku
program can read precanned files in this format, and writes them by
default, unless another output format is set by the
.B \-f
option.
.SS "Comma separated text format"
This format is useful for importing
.B sudoku
boards into a spreadsheet. It represents each board by 9 lines of
comma separated fields. Each field is blank, or contains a digit.
The
.B sudoku
program cannot read precanned files in this format, and writes them
when the
.B \-fcsv
option is set. Unlike the standard or compact text formats, there
are no lines separating boards, and hence, it is really only feasible
to store one board per file.
.SS "Postscript format"
This format is useful for printing out
.B sudoku
boards. The
.B sudoku
program cannot read boards stored in this format, and writes them
when the
.B \-fpostscript
option is set. Unlike the standard or compact text formats, it is
not possible to store multiple boards in the same file.
.SS "HTML format"
This format is useful for printing out
.B sudoku
boards. The
.B sudoku
program cannot read boards stored in this format, and writes them
when the
.B \-fhtml
option is set. Unlike the standard or compact text formats, it is
not possible to store multiple boards in the same file.
.SH "SEE ALSO"
There are a large number of websites dedicated to the
.B sudoku
puzzle that can be found easily using a search engine.
Some of these sites provide game boards that can be challenging
to solve, and others provide strategies for finding moves.
.SH DIAGNOSTICS
There are limited diagnostics available when an error occurs.
.SH ACKNOWLEDGEMENTS
Mark Foreman for the HTML output format; Joanna Ferris and Heather for
encouraging this endeavour.
.SH AUTHOR
Michael Kennett (mike@laurasia.com.au)
.SH COPYRIGHT
This manual page, and all associated files, have been placed into
the public domain by Michael Kennett, July 2005. They may be used
by anybody for any purpose whatsoever, however \fBNO WARRANTY\fR, of any
sort, applies to this work.
|