Ahem. The `Solve' option in orientable Twiddle needs to correct the
[sgt/puzzles] / puzzles.but
1 \title Simon Tatham's Portable Puzzle Collection
2
3 \cfg{winhelp-filename}{puzzles.hlp}
4 \cfg{winhelp-contents-titlepage}{Contents}
5
6 \cfg{text-filename}{puzzles.txt}
7
8 \cfg{html-contents-filename}{index.html}
9 \cfg{html-template-filename}{%k.html}
10 \cfg{html-index-filename}{docindex.html}
11 \cfg{html-leaf-level}{1}
12 \cfg{html-contents-depth-0}{1}
13 \cfg{html-contents-depth-1}{2}
14 \cfg{html-leaf-contains-contents}{true}
15
16 \cfg{info-filename}{puzzles.info}
17
18 \cfg{ps-filename}{puzzles.ps}
19 \cfg{pdf-filename}{puzzles.pdf}
20
21 \define{by} \u00D7{x}
22
23 This is a collection of small one-player puzzle games.
24
25 \copyright This manual is copyright 2004 Simon Tatham. All rights
26 reserved. You may distribute this documentation under the MIT licence.
27 See \k{licence} for the licence text in full.
28
29 \cfg{html-local-head}{<meta name="AppleTitle" content="Puzzles Help">}
30
31 \versionid $Id$
32
33 \C{intro} Introduction
34
35 I wrote this collection because I thought there should be more small
36 desktop toys available: little games you can pop up in a window and
37 play for two or three minutes while you take a break from whatever
38 else you were doing. And I was also annoyed that every time I found
39 a good game on (say) \i{Unix}, it wasn't available the next time I
40 was sitting at a \i{Windows} machine, or vice versa; so I arranged
41 that everything in my personal puzzle collection will happily run on
42 both, and have more recently done a port to Mac OS X as well. When I
43 find (or perhaps invent) further puzzle games that I like, they'll
44 be added to this collection and will immediately be available on
45 both platforms. And if anyone feels like writing any other front
46 ends - PocketPC, Mac OS pre-10, or whatever it might be - then all
47 the games in this framework will immediately become available on
48 another platform as well.
49
50 The actual games in this collection were mostly not my invention; I
51 saw them elsewhere, and rewrote them in a form that was more
52 convenient for me. I do not claim credit, in general, for inventing
53 the rules of any of these puzzles; all I claim is authorship of the
54 code (or at least those parts of the code that weren't contributed
55 by other people!).
56
57 This collection is distributed under the \i{MIT licence} (see
58 \k{licence}). This means that you can do pretty much anything you like
59 with the game binaries or the code, except pretending you wrote them
60 yourself, or suing me if anything goes wrong.
61
62 The most recent versions, and \i{source code}, can be found at
63 \I{website}\W{http://www.chiark.greenend.org.uk/~sgtatham/puzzles/}\cw{http://www.chiark.greenend.org.uk/~sgtatham/puzzles/}.
64
65 Please report \I{feedback}\i{bugs} to
66 \W{mailto:anakin@pobox.com}\cw{anakin@pobox.com}.
67 You might find it helpful to read this article before reporting a bug:
68
69 \W{http://www.chiark.greenend.org.uk/~sgtatham/bugs.html}\cw{http://www.chiark.greenend.org.uk/~sgtatham/bugs.html}
70
71 \ii{Patches} are welcome. Especially if they provide a new front end
72 (to make all these games run on another platform), or a new game.
73
74
75 \C{common} \ii{Common features}
76
77 This chapter describes features that are common to all the games.
78
79 \H{common-actions} \I{controls}Common actions
80
81 These actions are all available from the \I{Game menu}\q{Game} menu
82 and via \I{keys}keyboard shortcuts, in addition to any game-specific
83 actions.
84
85 (On Mac OS X, to conform with local user interface standards, these
86 actions are situated on the \I{File menu}\q{File} and \q{Edit
87 menu}\q{Edit} menus instead.)
88
89 \dt \ii\e{New game} (\q{N}, Ctrl+\q{N})
90
91 \dd Starts a new game, with a random initial state.
92
93 \dt \ii\e{Restart game} (\q{R})
94
95 \dd Resets the current game to its initial state. Undo is lost.
96
97 \dt \ii\e{Undo} (\q{U}, Ctrl+\q{Z}, Ctrl+\q{_})
98
99 \dd Undoes a single move. (You can undo moves back to the start of the
100 game.)
101
102 \dt \ii\e{Redo} (Ctrl+\q{R})
103
104 \dd Redoes a previous undone move.
105
106 \dt \ii\e{Copy}
107
108 \dd Copies the current state of your game to the clipboard in text
109 format, so that you can paste it into (say) an e-mail client or a
110 web message board if you're discussing the game with someone else.
111 (Not all games support this feature.)
112
113 \dt \ii\e{Solve}
114
115 \dd Transforms the puzzle instantly into its solved state. For some
116 games (Cube) this feature is not supported at all because it is of
117 no particular use. For other games (such as Pattern), the solved
118 state can be used to give you information, if you can't see how a
119 solution can exist at all or you want to know where you made a
120 mistake. For still other games (such as Sixteen), automatic solution
121 tells you nothing about how to \e{get} to the solution, but it does
122 provide a useful way to get there quickly so that you can experiment
123 with set-piece moves and transformations.
124
125 \lcont{
126
127 Some games (such as Solo) are capable of solving a game ID you have
128 typed in from elsewhere. Other games (such as Rectangles) cannot
129 solve a game ID they didn't invent themself, but when they did
130 invent the game ID they know what the solution is already. Still
131 other games (Pattern) can solve \e{some} external game IDs, but only
132 if they aren't too difficult.
133
134 }
135
136 \dt \I{exit}\ii\e{Quit} (\q{Q}, Ctrl+\q{Q})
137
138 \dd Closes the application entirely.
139
140 \H{common-id} Recreating games with the \ii{game ID}
141
142 The \q{\i{Specific...}} option from the \I{Game menu}\q{Game} menu
143 (or the \q{File} menu, on Mac OS X) lets you see a short string (the
144 \q{game ID}) that captures the initial state of the current game.
145
146 The precise \I{ID format}format of the ID is specific to each game.
147 It consists of two parts delimited by a colon (e.g., \c{c4x4:4F01,0});
148 the first part encodes \i\e{parameters} (such as grid size), while the
149 second part encodes a \i\e{seed}, which determines the \i{initial
150 state} of the game within those parameters.
151
152 You can specify a new ID (or just a seed) here. Pressing \q{OK} starts
153 a new game with the specified ID (whether you changed it or not).
154 Pressing \q{Cancel} returns to the current game.
155
156 You can also use the game ID (or just the encoded parameters) as a
157 \i{command line} argument; see \k{common-cmdline} for more detail.
158
159 Game IDs are portable across platforms; you can use a game ID
160 generated by the Windows version of a game on the Unix version, etc.
161
162 \H{common-type} The \q{Type} menu
163
164 The \I{Type menu}\q{Type} menu, if present, may contain a list of
165 \i{preset} game settings. Selecting one of these will start a new
166 random game with the parameters specified.
167
168 The \q{Type} menu may also contain a \q{\i{Custom...}} option which
169 allows you to fine-tune game \i{parameters}. The parameters available
170 are specific to each game and are described in the following sections.
171
172 \H{common-cmdline} Specifying game parameters on the \i{command line}
173
174 (This section does not apply to the Mac OS X version.)
175
176 The games in this collection deliberately do not ever save
177 information on to the computer they run on: they have no high score
178 tables and no saved preferences. (This is because I expect at least
179 some people to play them at work, and those people will probably
180 appreciate leaving as little evidence as possible!)
181
182 However, if you do want to arrange for one of these games to default
183 to a particular set of parameters, you can specify them on the
184 command line.
185
186 The easiest way to do this is to set up the parameters you want
187 using the \q{Type} menu (see \k{common-type}), and then to select
188 \q{Specific} from the \q{Game} or \q{File} menu (see \k{common-id}).
189 The text in the \q{Game ID} box will be composed of two parts,
190 separated by a colon. The first of these parts represents the game
191 parameters (the size of the playing area, for example, and anything
192 else you set using the \q{Type} menu).
193
194 If you run the game with just that parameter text on the command
195 line, it will start up with the settings you specified.
196
197 For example: if you run Cube (see \k{cube}), select \q{Octahedron}
198 from the \q{Type} menu, and then go to the game ID selection, you
199 will see a string of the form \cq{o2x2:911A81,10}. Take only the
200 part before the colon (\cq{o2x2}), and start Cube with that text on
201 the command line: \cq{cube o2x2}.
202
203 If you copy the \e{entire} game ID on to the command line, the game
204 will start up in the specific game that was described. This is
205 occasionally a more convenient way to start a particular game ID
206 than by pasting it into the game ID selection box.
207
208 \C{net} \i{Net}
209
210 \cfg{winhelp-topic}{games.net}
211
212 (\e{Note:} the \i{Windows} version of this game is called
213 \i\cw{NETGAME.EXE} to avoid clashing with Windows's own \cw{NET.EXE}.)
214
215 I originally saw this in the form of a Flash game called \i{FreeNet}
216 \k{FreeNet}, written by Pavils Jurjans. The computer prepares a
217 network by connecting up the centres of squares in a grid, and then
218 shuffles the network by rotating every tile randomly. Your job is to
219 rotate it all back into place. The successful solution will be an
220 entirely connected network, with no closed loops. \#{Is it also true
221 that a correct solution will not contain any cycles?} As a visual aid,
222 all tiles which are connected to the one in the middle are
223 highlighted.
224
225 \B{FreeNet} \W{http://www.jurjans.lv/stuff/net/FreeNet.htm}\cw{http://www.jurjans.lv/stuff/net/FreeNet.htm}
226
227 \H{net-controls} \i{Net controls}
228
229 \IM{Net controls} controls, for Net
230 \IM{Net controls} keys, for Net
231 \IM{Net controls} shortcuts (keyboard), for Net
232
233 This game can be played with either the keyboard or the mouse. The
234 controls are:
235
236 \dt \e{Select tile}: mouse pointer, arrow keys
237
238 \dt \e{Rotate tile anticlockwise}: left mouse button, \q{A} key
239
240 \dt \e{Rotate tile clockwise}: right mouse button, \q{D} key
241
242 \dt \e{Lock (or unlock) tile}: middle mouse button, shift-click, \q{S} key
243
244 \dd You can lock a tile once you're sure of its orientation. You can
245 also unlock it again, but while it's locked you can't accidentally
246 turn it.
247
248 \dt \e{Jumble tiles}: \q{J} key
249
250 \dd This key turns all tiles that are not locked to random
251 orientations.
252
253 (All the actions described in \k{common-actions} are also available.)
254
255 \H{net-params} \I{parameters, for Net}Net parameters
256
257 These parameters are available from the \q{Custom...} option on the
258 \q{Type} menu.
259
260 \dt \e{Width}, \e{Height}
261
262 \dd Size of grid in tiles.
263
264 \dt \e{Walls wrap around}
265
266 \dd If checked, flow can pass from the left edge to the right edge,
267 and from top to bottom, and vice versa.
268
269 \dt \e{Barrier probability}
270
271 \dd A number between 0.0 and 1.0 controlling whether an immovable
272 barrier is placed between two tiles to prevent flow between them (a
273 higher number gives more barriers). Since barriers are immovable, they
274 act as constraints on the solution (i.e., hints).
275
276 \lcont{
277
278 The grid generation in Net has been carefully arranged so that the
279 barriers are independent of the rest of the grid. This means that if
280 you change the \e{Barrier probability} parameter, and then re-enter
281 the same game ID you were playing before (see \k{common-id}), you
282 should see exactly the same starting grid, with the only change
283 being the number of barriers. So if you're stuck on a particular
284 grid and need a hint, you could start up another instance of Net,
285 set up the same parameters but a higher barrier probability, and
286 enter the game seed from the original Net window.
287
288 }
289
290 \C{cube} \i{Cube}
291
292 \cfg{winhelp-topic}{games.cube}
293
294 This is another one I originally saw as a web game. This one was a
295 Java game \k{cube-java-game}, by Paul Scott. You have a grid of 16
296 squares, six of which are blue; on one square rests a cube. Your move
297 is to use the arrow keys to roll the cube through 90 degrees so that
298 it moves to an adjacent square. If you roll the cube on to a blue
299 square, the blue square is picked up on one face of the cube; if you
300 roll a blue face of the cube on to a non-blue square, the blueness is
301 put down again. (In general, whenever you roll the cube, the two faces
302 that come into contact swap colours.) Your job is to get all six blue
303 squares on to the six faces of the cube at the same time. Count your
304 moves and try to do it in as few as possible.
305
306 Unlike the original Java game, my version has an additional feature:
307 once you've mastered the game with a cube rolling on a square grid,
308 you can change to a triangular grid and roll any of a tetrahedron, an
309 octahedron or an icosahedron.
310
311 \B{cube-java-game} \W{http://www3.sympatico.ca/paulscott/cube/cube.htm}\cw{http://www3.sympatico.ca/paulscott/cube/cube.htm}
312
313 \H{cube-controls} \i{Cube controls}
314
315 \IM{Cube controls} controls, for Cube
316 \IM{Cube controls} keys, for Cube
317 \IM{Cube controls} shortcuts (keyboard), for Cube
318
319 This game is played with the keyboard. The arrow keys are used to roll the
320 cube (or other solid).
321
322 On the triangular grids, the mapping of arrow keys to directions is
323 more approximate. Vertical movement is disallowed where it doesn't
324 make sense. The four keys surrounding the arrow keys on the numeric
325 keypad (\q{7}, \q{9}, \q{1}, \q{3}) can be used for diagonal movement.
326
327 (All the actions described in \k{common-actions} are also available.)
328
329 \H{cube-params} \I{parameters, for Cube}Cube parameters
330
331 These parameters are available from the \q{Custom...} option on the
332 \q{Type} menu.
333
334 \dt \e{Type of solid}
335
336 \dd Selects the solid to roll (and hence the shape of the grid):
337 tetrahedron, cube, octahedron, or icosahedron.
338
339 \dt \e{Width / top}, \e{Height / bottom}
340
341 \dd On a square grid, horizontal and vertical dimensions. On a
342 triangular grid, the number of triangles on the top and bottom rows
343 respectively.
344
345
346 \C{fifteen} \i{Fifteen}
347
348 \cfg{winhelp-topic}{games.fifteen}
349
350 The old ones are the best: this is the good old \q{\i{15-puzzle}}
351 with sliding tiles. You have a 4\by\.4 square grid; 15 squares
352 contain numbered tiles, and the sixteenth is empty. Your move is to
353 choose a tile next to the empty space, and slide it into the space.
354 The aim is to end up with the tiles in numerical order, with the
355 space in the bottom right (so that the top row reads 1,2,3,4 and the
356 bottom row reads 13,14,15,\e{space}).
357
358 \H{fifteen-controls} \i{Fifteen controls}
359
360 \IM{Fifteen controls} controls, for Fifteen
361 \IM{Fifteen controls} keys, for Fifteen
362 \IM{Fifteen controls} shortcuts (keyboard), for Fifteen
363
364 This game can be controlled with the mouse or the keyboard.
365
366 A left-click with the mouse in the row or column containing the empty
367 space will move as many tiles as necessary to move the space to the
368 mouse pointer.
369
370 The arrow keys will move a tile adjacent to the space in the direction
371 indicated (moving the space in the \e{opposite} direction).
372
373 (All the actions described in \k{common-actions} are also available.)
374
375 \H{fifteen-params} \I{parameters, for Fifteen}Fifteen parameters
376
377 The only options available from the \q{Custom...} option on the \q{Type}
378 menu are \e{Width} and \e{Height}, which are self-explanatory. (Once
379 you've changed these, it's not a \q{15-puzzle} any more, of course!)
380
381
382 \C{sixteen} \i{Sixteen}
383
384 \cfg{winhelp-topic}{games.sixteen}
385
386 Another sliding tile puzzle, visually similar to Fifteen (see
387 \k{fifteen}) but with a different type of move. This time, there is no
388 hole: all 16 squares on the grid contain numbered squares. Your move
389 is to shift an entire row left or right, or shift an entire column up
390 or down; every time you do that, the tile you shift off the grid
391 re-appears at the other end of the same row, in the space you just
392 vacated. To win, arrange the tiles into numerical order (1,2,3,4 on
393 the top row, 13,14,15,16 on the bottom). When you've done that, try
394 playing on different sizes of grid.
395
396 I \e{might} have invented this game myself, though only by accident if
397 so (and I'm sure other people have independently invented it). I
398 thought I was imitating a screensaver I'd seen, but I have a feeling
399 that the screensaver might actually have been a Fifteen-type puzzle
400 rather than this slightly different kind. So this might be the one
401 thing in my puzzle collection which represents creativity on my part
402 rather than just engineering.
403
404 \H{sixteen-controls} \I{controls, for Sixteen}Sixteen controls
405
406 This game is played with the mouse. Left-clicking on an arrow will
407 move the appropriate row or column in the direction indicated.
408 Right-clicking will move it in the opposite direction.
409
410 (All the actions described in \k{common-actions} are also available.)
411
412 \H{sixteen-params} \I{parameters, for Sixteen}Sixteen parameters
413
414 The only parameters available from the \q{Custom...} option on the
415 \q{Type} menu are \e{Width} and \e{Height}, which are
416 self-explanatory.
417
418
419 \C{twiddle} \i{Twiddle}
420
421 \cfg{winhelp-topic}{games.twiddle}
422
423 Twiddle is a tile-rearrangement puzzle, visually similar to Sixteen
424 (see \k{sixteen}): you are given a grid of square tiles, each
425 containing a number, and your aim is to arrange the numbers into
426 ascending order.
427
428 In basic Twiddle, your move is to rotate a square group of four
429 tiles about their common centre. (Orientation is not significant in
430 the basic puzzle, although you can select it.) On more advanced
431 settings, you can rotate a larger square group of tiles.
432
433 I first saw this type of puzzle in the GameCube game \q{Metroid
434 Prime 2}. In the Main Gyro Chamber in that game, there is a puzzle
435 you solve to unlock a door, which is a special case of Twiddle. I
436 developed this game as a generalisation of that puzzle.
437
438 \H{twiddle-controls} \I{controls, for Twiddle}Twiddle controls
439
440 To play Twiddle, click the mouse in the centre of the square group
441 you wish to rotate. In the basic mode, you rotate a 2\by\.2 square,
442 which means you have to click at a corner point where four tiles
443 meet.
444
445 In more advanced modes you might be rotating 3\by\.3 or even more at
446 a time; if the size of the square is odd then you simply click in
447 the centre tile of the square you want to rotate.
448
449 Clicking with the left mouse button rotates the group anticlockwise.
450 Clicking with the right button rotates it clockwise.
451
452 (All the actions described in \k{common-actions} are also available.)
453
454 \H{twiddle-parameters} \I{parameters, for Twiddle}Twiddle parameters
455
456 Twiddle provides several configuration options via the \q{Custom}
457 option on the \q{Type} menu:
458
459 \b You can configure the width and height of the puzzle grid.
460
461 \b You can configure the size of square block that rotates at a time.
462
463 \b You can ask for every square in the grid to be distinguishable
464 (the default), or you can ask for a simplified puzzle in which there
465 are groups of identical numbers. In the simplified puzzle your aim
466 is just to arrange all the 1s into the first row, all the 2s into
467 the second row, and so on.
468
469 \b You can configure whether the orientation of tiles matters. If
470 you ask for an orientable puzzle, each tile will have a triangle
471 drawn in it. All the triangles must be pointing upwards to complete
472 the puzzle.
473
474
475 \C{rectangles} \i{Rectangles}
476
477 \cfg{winhelp-topic}{games.rectangles}
478
479 You have a grid of squares, with numbers written in some (but not all)
480 of the squares. Your task is to subdivide the grid into rectangles of
481 various sizes, such that (a) every rectangle contains exactly one
482 numbered square, and (b) the area of each rectangle is equal to the
483 number written in its numbered square.
484
485 Credit for this game goes to the Japanese puzzle magazine \i{Nikoli}
486 \k{nikoli-rect}; I've also seen a Palm implementation at \i{Puzzle Palace}
487 \k{puzzle-palace-rect}. Unlike Puzzle Palace's implementation, my version
488 automatically generates random grids of any size you like. The quality
489 of puzzle design is therefore not quite as good as hand-crafted
490 puzzles would be (in particular, a unique solution cannot be
491 guaranteed), but on the plus side you get an inexhaustible supply of
492 puzzles tailored to your own specification.
493
494 \B{nikoli-rect} \W{http://www.nikoli.co.jp/puzzles/7/index_text-e.htm}\cw{http://www.nikoli.co.jp/puzzles/7/index_text-e.htm}
495
496 \B{puzzle-palace-rect} \W{http://www.puzzle.gr.jp/puzzle/sikaku/palm/index.html.en}\cw{http://www.puzzle.gr.jp/puzzle/sikaku/palm/index.html.en}
497
498 \H{rectangles-controls} \I{controls, for Rectangles}Rectangles controls
499
500 This game is played with the mouse.
501
502 Left-click any edge to toggle it on or off, or click and drag to draw
503 an entire rectangle (or line) on the grid in one go (removing any
504 existing edges within that rectangle).
505
506 When a rectangle of the correct size is completed, it will be shaded.
507
508 (All the actions described in \k{common-actions} are also available.)
509
510 \H{rectangles-params} \I{parameters, for Rectangles}Rectangles parameters
511
512 The \q{Custom...} option on the \q{Type} menu offers you \e{Width}
513 and \e{Height} parameters, which are self-explanatory.
514
515 \q{Expansion factor} is a mechanism for changing the type of grids
516 generated by the program. Some people prefer a grid containing a few
517 large rectangles to one containing many small ones. So you can ask
518 Rectangles to essentially generate a \e{smaller} grid than the size
519 you specified, and then to expand it by adding rows and columns.
520
521 The default expansion factor of zero means that Rectangles will
522 simply generate a grid of the size you ask for, and do nothing
523 further. If you set an expansion factor of (say) 0.5, it means that
524 each dimension of the grid will be expanded to half again as big
525 after generation. In other words, the initial grid will be 2/3 the
526 size in each dimension, and will be expanded to its full size
527 without adding any more rectangles.
528
529 Setting an expansion factor of around 0.5 tends to make the game
530 more difficult, and also (in my experience) rewards a less deductive
531 and more intuitive playing style. If you set it \e{too} high,
532 though, the game simply cannot generate more than a few rectangles
533 to cover the entire grid, and the game becomes trivial.
534
535 \H{rectangles-cmdline} \I{command line, for Rectangles}Additional
536 command-line configuration
537
538 The expansion factor parameter, described in \k{rectangles-params},
539 is not mentioned by default in the game ID (see \k{common-id}). So
540 if you set your expansion factor to (say) 0.75, and then you
541 generate an 11\by\.11 grid, then the game ID will simply say
542 \c{11x11:}\e{numbers}. This means that if you send the game ID to
543 another player and they paste it into their copy of Rectangles,
544 their game will not be automatically configured to use the same
545 expansion factor in any subsequent grids it generates. (I don't
546 think the average person examining a single grid sent to them by
547 another player would want their configuration modified to that
548 extent.)
549
550 If you are specifying a game ID or game parameters on the command
551 line (see \k{common-cmdline}) and you do want to configure the
552 expansion factor, you can do it by suffixing the letter \cq{e} to
553 the parameters, followed by the expansion factor as a decimal
554 number. For example:
555
556 \b \cq{rect 11x11e0.75} starts Rectangles with a grid size of
557 11\u00d7{x}11 and an expansion factor of 0.75.
558
559 \b \cq{rect 11x11e0.75:g11c6e5e4a2_4e9c3b3d3b5g2b6c4k4g30a8n3j1g6a2}
560 starts Rectangles with a grid size of 11\u00d7{x}11, an expansion
561 factor of 0.75, \e{and} a specific game selected.
562
563
564 \C{netslide} \i{Netslide}
565
566 \cfg{winhelp-topic}{games.netslide}
567
568 This game was submitted by Richard Boulton. It combines the grid
569 generation of Net (see \k{net}) with the movement of Sixteen (see
570 \k{sixteen}): you have a Net grid, but instead of rotating tiles back
571 into place you have to slide them into place by moving a whole row at
572 a time.
573
574 As in Sixteen, \I{controls, for Netslide}control is with the mouse.
575 See \k{sixteen-controls}.
576
577 \I{parameters, for Netslide}Game parameters are the same as for Net
578 (see \k{net-params}).
579
580
581 \C{pattern} \i{Pattern}
582
583 \cfg{winhelp-topic}{games.pattern}
584
585 You have a grid of squares, which must all be filled in either black
586 or white. Beside each row of the grid are listed the lengths of the
587 runs of black squares on that row; above each column are listed the
588 lengths of the runs of black squares in that column. Your aim is to
589 fill in the entire grid black or white.
590
591 I first saw this puzzle form around 1995, under the name
592 \q{\i{nonograms}}. I've seen it in various places since then, under
593 different names.
594
595 Normally, puzzles of this type turn out to be a meaningful picture
596 of something once you've solved them. However, since this version
597 generates the puzzles automatically, they will just look like random
598 groupings of squares. (One user has suggested that this is actually
599 a \e{good} thing, since it prevents you from guessing the colour of
600 squares based on the picture, and forces you to use logic instead.)
601 The advantage, though, is that you never run out of them.
602
603 \H{pattern-controls} \I{controls, for Pattern}Pattern controls
604
605 This game is played with the mouse.
606
607 Left-click in a square to colour it black. Right-click to colour it
608 white. If you make a mistake, you can middle-click, or hold down
609 Shift while clicking with any button, to colour the square in the
610 default grey (meaning \q{undecided}) again.
611
612 You can click and drag with the left or right mouse button to colour
613 a vertical or horizontal line of squares black or white at a time
614 (respectively). If you click and drag with the middle button, or
615 with Shift held down, you can colour a whole rectangle of squares
616 grey.
617
618 (All the actions described in \k{common-actions} are also available.)
619
620 \H{pattern-parameters} \I{parameters, for Pattern}Pattern parameters
621
622 The only options available from the \q{Custom...} option on the \q{Type}
623 menu are \e{Width} and \e{Height}, which are self-explanatory.
624
625
626 \C{solo} \i{Solo}
627
628 \cfg{winhelp-topic}{games.solo}
629
630 You have a square grid, which is divided into square or rectangular
631 blocks. Each square must be filled in with a digit from 1 to the
632 size of the grid, in such a way that
633
634 \b every row contains only one occurrence of each digit
635
636 \b every column contains only one occurrence of each digit
637
638 \b every block contains only one occurrence of each digit.
639
640 You are given some of the numbers as clues; your aim is to place the
641 rest of the numbers correctly.
642
643 The default puzzle size is 3\by\.3 (a 9\by\.9 actual grid, divided
644 into nine 3\by\.3 blocks). You can also select sizes with
645 rectangular blocks instead of square ones, such as 2\by\.3 (a
646 6\by\.6 grid divided into six 3\by\.2 blocks).
647
648 If you select a puzzle size which requires more than 9 digits, the
649 additional digits will be letters of the alphabet. For example, if
650 you select 3\by\.4 then the digits which go in your grid will be 1
651 to 9, plus \cq{a}, \cq{b} and \cq{c}.
652
653 I first saw this puzzle in \i{Nikoli} \k{nikoli-solo}, although it's also
654 been popularised by various newspapers under the name \q{Sudoku} or
655 \q{Su Doku}.
656
657 \B{nikoli-solo} \W{http://www.nikoli.co.jp/puzzles/1/index_text-e.htm}\cw{http://www.nikoli.co.jp/puzzles/1/index_text-e.htm}
658
659 \H{solo-controls} \I{controls, for Solo}Solo controls
660
661 To play Solo, simply click the mouse in any empty square and then
662 type a digit or letter on the keyboard to fill that square. If you
663 make a mistake, click the mouse in the incorrect square and press
664 Space to clear it again (or use the Undo feature).
665
666 (All the actions described in \k{common-actions} are also available.)
667
668 \H{solo-parameters} \I{parameters, for Solo}Solo parameters
669
670 Solo allows you to configure two separate dimensions of the puzzle
671 grid on the \q{Type} menu: the number of columns, and the number of
672 rows, into which the main grid is divided. (The size of a block is
673 the inverse of this: for example, if you select 2 columns and 3 rows,
674 each actual block will have 3 columns and 2 rows.)
675
676 You can also configure the type of symmetry shown in the generated
677 puzzles. More symmetry makes the puzzles look prettier but may also
678 make them easier, since the symmetry constraints can force more
679 clues than necessary to be present. Completely asymmetric puzzles
680 have the freedom to contain as few clues as possible.
681
682 Finally, you can configure the difficulty of the generated puzzles.
683 Difficulty levels are judged by the complexity of the techniques of
684 deduction required to solve the puzzle: each level requires a mode
685 of reasoning which was not necessary in the previous one. In
686 particular, on difficulty levels \q{Trivial} and \q{Basic} there
687 will be a square you can fill in with a single number at all times,
688 whereas at \q{Intermediate} level and beyond you will have to make
689 partial deductions about the \e{set} of squares a number could be in
690 (or the set of numbers that could be in a square). None of the
691 difficulty levels generated by this program ever requires making a
692 guess and backtracking if it turns out to be wrong.
693
694 Generating difficult puzzles is itself difficult: if you select
695 \q{Intermediate} or \q{Advanced} difficulty, Solo may have to make
696 many attempts at generating a puzzle before it finds one hard enough
697 for you. Be prepared to wait, especially if you have also configured
698 a large puzzle size.
699
700 \H{solo-cmdline} \I{command line, for Solo}Additional command-line
701 configuration
702
703 The symmetry and difficulty parameters (described in
704 \k{solo-parameters}) are not mentioned by default in the game ID
705 (see \k{common-id}). So if (for example) you set your symmetry to
706 4-way rotational and your difficulty to \q{Advanced}, and then you
707 generate a 3\by\.4 grid, then the game ID will simply say
708 \c{3x4:}\e{numbers}. This means that if you send the game ID to
709 another player and they paste it into their copy of Solo, their game
710 will not be automatically configured to use the same symmetry and
711 difficulty settings in any subsequent grids it generates. (I don't
712 think the average person examining a single grid sent to them by
713 another player would want their configuration modified to that
714 extent.)
715
716 If you are specifying a game ID or game parameters on the command
717 line (see \k{common-cmdline}) and you do want to configure the
718 symmetry, you can do it by suffixing additional text to the
719 parameters:
720
721 \b \cq{m4} for 4-way mirror symmetry
722
723 \b \cq{r4} for 4-way rotational symmetry
724
725 \b \cq{r2} for 2-way rotational symmetry
726
727 \b \cq{a} for no symmetry at all (stands for \q{asymmetric})
728
729 \b \cq{dt} for Trivial difficulty level
730
731 \b \cq{db} for Basic difficulty level
732
733 \b \cq{di} for Intermediate difficulty level
734
735 \b \cq{da} for Advanced difficulty level
736
737 So, for example, you can make Solo generate asymmetric 3x4 grids by
738 running \cq{solo 3x4a}, or 4-way rotationally symmetric 2x3 grids by
739 running \cq{solo 2x3r4}, or \q{Advanced}-level 2x3 grids by running
740 \cq{solo 2x3da}.
741
742
743 \A{licence} \I{MIT licence}\ii{Licence}
744
745 This software is \i{copyright} 2004-2005 Simon Tatham.
746
747 Portions copyright Richard Boulton.
748
749 Permission is hereby granted, free of charge, to any person
750 obtaining a copy of this software and associated documentation files
751 (the "Software"), to deal in the Software without restriction,
752 including without limitation the rights to use, copy, modify, merge,
753 publish, distribute, sublicense, and/or sell copies of the Software,
754 and to permit persons to whom the Software is furnished to do so,
755 subject to the following conditions:
756
757 The above copyright notice and this permission notice shall be
758 included in all copies or substantial portions of the Software.
759
760 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
761 EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
762 MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
763 NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
764 BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
765 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
766 CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
767 SOFTWARE.
768
769 \IM{specific...} Specific..., menu option
770 \IM{custom...} Custom..., menu option
771
772 \IM{game ID} game ID
773 \IM{game ID} ID, game
774 \IM{ID format} ID format
775 \IM{ID format} format, ID
776 \IM{ID format} game ID, format
777
778 \IM{keys} keys
779 \IM{keys} shortcuts (keyboard)
780
781 \IM{initial state} initial state
782 \IM{initial state} state, initial
783
784 \IM{MIT licence} MIT licence
785 \IM{MIT licence} licence, MIT