Now that Map has some seriously complex deductions, it's about time
[sgt/puzzles] / puzzles.but
index bc8e4bf..47cb78a 100644 (file)
@@ -20,6 +20,8 @@
 
 \define{by} \u00D7{x}
 
+\define{dash} \u2013{-}
+
 This is a collection of small one-player puzzle games.
 
 \copyright This manual is copyright 2004-5 Simon Tatham. All rights
@@ -43,16 +45,15 @@ both, and have more recently done a port to Mac OS X as well. When I
 find (or perhaps invent) further puzzle games that I like, they'll
 be added to this collection and will immediately be available on
 both platforms. And if anyone feels like writing any other front
-ends - PocketPC, Mac OS pre-10, or whatever it might be - then all
-the games in this framework will immediately become available on
-another platform as well.
+ends \dash PocketPC, Mac OS pre-10, or whatever it might be \dash
+then all the games in this framework will immediately become
+available on another platform as well.
 
-The actual games in this collection were mostly not my invention; I
-saw them elsewhere, and rewrote them in a form that was more
-convenient for me. I do not claim credit, in general, for inventing
-the rules of any of these puzzles; all I claim is authorship of the
-code (or at least those parts of the code that weren't contributed
-by other people!).
+The actual games in this collection were mostly not my invention; they
+are re-implementations of existing game concepts within my portable
+puzzle framework. I do not claim credit, in general, for inventing the
+rules of any of these puzzles. (I don't even claim authorship of all
+the code; some of the puzzles have been submitted by other authors.)
 
 This collection is distributed under the \i{MIT licence} (see
 \k{licence}). This means that you can do pretty much anything you like
@@ -110,6 +111,13 @@ had done before saving).
 
 }
 
+\dt \ii\e{Print}
+
+\dd Where supported (currently only on Windows), brings up a dialog
+allowing you to print an arbitrary number of puzzles randomly
+generated from the current parameters, optionally including the
+current puzzle.
+
 \dt \ii\e{Undo} (\q{U}, Ctrl+\q{Z}, Ctrl+\q{_})
 
 \dd Undoes a single move. (You can undo moves back to the start of the
@@ -294,6 +302,7 @@ than by pasting it into the game ID selection box.
 then some options, such as the difficulty level in Solo, will be
 missing. See \k{common-id} for more details on this.)
 
+
 \C{net} \i{Net}
 
 \cfg{winhelp-topic}{games.net}
@@ -405,6 +414,7 @@ feature and risk having ambiguous puzzles. (Also, finding \e{all}
 the possible solutions can be an additional challenge for an
 advanced player.)
 
+
 \C{cube} \i{Cube}
 
 \cfg{winhelp-topic}{games.cube}
@@ -713,6 +723,7 @@ meanings to those in Net (see \k{net-params}) and Sixteen (see
 
 Netslide was contributed to this collection by Richard Boulton.
 
+
 \C{pattern} \i{Pattern}
 
 \cfg{winhelp-topic}{games.pattern}
@@ -839,16 +850,17 @@ particular, on difficulty levels \q{Trivial} and \q{Basic} there
 will be a square you can fill in with a single number at all times,
 whereas at \q{Intermediate} level and beyond you will have to make
 partial deductions about the \e{set} of squares a number could be in
-(or the set of numbers that could be in a square). At
-\q{Unreasonable} level, even this is not enough, and you will
+(or the set of numbers that could be in a square).
+\#{Advanced, Extreme?}
+At \q{Unreasonable} level, even this is not enough, and you will
 eventually have to make a guess, and then backtrack if it turns out
 to be wrong.
 
-Generating difficult puzzles is itself difficult: if you select
-\q{Intermediate} or \q{Advanced} difficulty, Solo may have to make
-many attempts at generating a puzzle before it finds one hard enough
-for you. Be prepared to wait, especially if you have also configured
-a large puzzle size.
+Generating difficult puzzles is itself difficult: if you select one
+of the higher difficulty levels, Solo may have to make many attempts
+at generating a puzzle before it finds one hard enough for you. Be
+prepared to wait, especially if you have also configured a large
+puzzle size.
 
 
 \C{mines} \i{Mines}
@@ -960,11 +972,6 @@ Removing a region causes the rest of the grid to shuffle up:
 blocks that are suspended will fall down (first), and then empty
 columns are filled from the right. 
 
-The game generator does not try to guarantee soluble grids;
-it will, however, ensure that there are at least 2 squares of each 
-colour on the grid at the start (and will forbid custom grids for which
-that would be impossible).
-
 Same Game was contributed to this collection by James Harvey.
 
 \H{samegame-controls} \i{Same Game controls}
@@ -987,6 +994,8 @@ The cursor keys move a cursor around the grid. Pressing the Space or
 Enter keys while the cursor is in an unselected region selects it;
 pressing Space or Enter again removes it as above.
 
+(All the actions described in \k{common-actions} are also available.)
+
 \H{samegame-parameters} \I{parameters, for Same Game}Same Game parameters
 
 These parameters are available from the \q{Custom...} option on the
@@ -1010,6 +1019,23 @@ any points at all. With the alternative \q{(n-1)^2} system, regions of
 two squares score a point each, and larger regions score relatively
 more points.
 
+\dt \e{Ensure solubility}
+
+\dd If this option is ticked (the default state), generated grids
+will be guaranteed to have at least one solution.
+
+\lcont{
+
+If you turn it off, the game generator will not try to guarantee
+soluble grids; it will, however, still ensure that there are at
+least 2 squares of each colour on the grid at the start (since a
+grid with exactly one square of a given colour is \e{definitely}
+insoluble). Grids generated with this option disabled may contain
+more large areas of contiguous colour, leading to opportunities for
+higher scores; they can also take less time to generate.
+
+}
+
 
 \C{flip} \i{Flip}
 
@@ -1041,6 +1067,8 @@ mark, the game should be solved. (If you click in a square
 \e{without} a red mark, a red mark will appear in it to indicate
 that you will need to reverse that operation to reach the solution.)
 
+(All the actions described in \k{common-actions} are also available.)
+
 \H{flip-parameters} \I{parameters, for flip}Flip parameters
 
 These parameters are available from the \q{Custom...} option on the
@@ -1112,6 +1140,8 @@ If you correctly position all the pegs the solution will be displayed
 below; if you run out of guesses (or select \q{Solve...}) the solution
 will also be revealed.
 
+(All the actions described in \k{common-actions} are also available.)
+
 \H{guess-parameters} \I{parameters, for Guess}Guess parameters
 
 These parameters are available from the \q{Custom...} option on the
@@ -1156,8 +1186,8 @@ peg by jumping an adjacent peg over it (horizontally or vertically)
 to a vacant hole on the other side. Your aim is to remove all but one
 of the pegs initially present.
 
-This game, best known as \q{Peg Solitaire}, is possibly one of the
-oldest puzzle games still commonly known.
+This game, best known as \I{Solitaire, Peg}\q{Peg Solitaire}, is
+possibly one of the oldest puzzle games still commonly known.
 
 \H{pegs-controls} \i{Pegs controls}
 
@@ -1173,6 +1203,7 @@ Vacant spaces which you can move a peg into are marked with holes. A
 space with no peg and no hole is not available for moving at all: it
 is an obstacle which you must work around.
 
+(All the actions described in \k{common-actions} are also available.)
 
 \H{pegs-parameters} \I{parameters, for Pegs}Pegs parameters
 
@@ -1197,11 +1228,12 @@ time (but always one that is known to have a solution).
 
 \cfg{winhelp-topic}{games.dominosa}
 
-A normal set of dominoes has been arranged irregularly into a
-rectangle; then the number in each square has been written down and
-the dominoes themselves removed. Your task is to reconstruct the
-pattern by arranging the set of dominoes to match the provided array
-of numbers.
+A normal set of dominoes \dash that is, one instance of every
+(unordered) pair of numbers from 0 to 6 \dash has been arranged
+irregularly into a rectangle; then the number in each square has
+been written down and the dominoes themselves removed. Your task is
+to reconstruct the pattern by arranging the set of dominoes to match
+the provided array of numbers.
 
 This puzzle is widely credited to O. S. Adler, and takes part of its
 name from those initials.
@@ -1220,6 +1252,7 @@ them, which you can use to remind yourself that you know those two
 numbers are \e{not} covered by a single domino. Right-clicking again
 removes the line.
 
+(All the actions described in \k{common-actions} are also available.)
 
 \H{dominosa-parameters} \I{parameters, for Dominosa}Dominosa parameters
 
@@ -1263,6 +1296,8 @@ I originally saw this in the form of a Flash game called \i{Planarity}
 To move a point, click on it with the left mouse button and drag it
 into a new position.
 
+(All the actions described in \k{common-actions} are also available.)
+
 \H{untangle-parameters} \I{parameters, for Untangle}Untangle parameters
 
 There is only one parameter available from the \q{Custom...} option
@@ -1298,9 +1333,9 @@ the following ways:
 \b A laser that would re-emerge from the entry location is considered to be
    \q{reflected}. 
 
-\b A laser which would get deflected down the laser firing range is also
-   considered to be \q{reflected}; this means that a ball to the front-left
-   or front-right of a laser's entry point will reflect the laser. 
+\b A laser which would get deflected before entering the arena (down the
+   \q{firing range}) by a ball to the front-left or front-right of its
+   entry point is also considered to be \q{reflected}.
 
 Lasers that are reflected appear as a \q{R}; lasers that hit balls
 dead-on appear as \q{H}. Otherwise, a number appears at the firing point
@@ -1374,14 +1409,25 @@ right-clicking in the laser firing range above/below that column, or
 to the left/right of that row.  
 
 When an appropriate number of balls have been guessed a button will
-appear at the top-right corner of the grid; clicking that will mark
+appear at the top-left corner of the grid; clicking that will mark
 your guesses. 
 
-Once marked, correctly-placed balls are displayed as filled black
-circles.  Incorrectly-placed balls are displayed as filled black
-circles with red crosses, and missing balls are filled red circles.
-In addition, a red circle marks any laser you had already fired
-which is not consistent with your ball layout, and red text marks
+If you click the \q{mark} button and your guesses are not correct,
+the game will show you as little information as possible to
+demonstrate this to you, so you can try again. If your ball
+positions are not consistent with the laser paths you already know
+about, one laser path will be circled to indicate that it proves you
+wrong. If your positions match all the existing laser paths but are
+still wrong, one new laser path will be revealed (written in red)
+which is not consistent with your current guesses.
+
+If you decide to give up completely, you can select Solve to reveal
+the actual ball positions. At this point, correctly-placed balls
+will be displayed as filled black circles; incorrectly-placed balls
+are displayed as filled black circles with red crosses, and missing
+balls are filled red circles. In addition, a red circle marks any
+laser you had already fired which is not consistent with your ball
+layout (just as when you press the mark button), and red text marks
 any laser you \e{could} have fired in order to distinguish your ball
 layout from the right one.
 
@@ -1407,11 +1453,348 @@ using a different number to the original solution is still acceptable,
 if all the laser inputs and outputs match.
 
 
+\C{slant} \i{Slant}
+
+\cfg{winhelp-topic}{games.slant}
+
+You have a grid of squares. Your aim is to draw a diagonal line
+through each square, and choose which way each line slants so that
+the following conditions are met:
+
+\b The diagonal lines never form a loop.
+
+\b Any point with a circled number has precisely that many lines
+meeting at it. (Thus, a 4 is the centre of a cross shape, whereas a
+zero is the centre of a diamond shape \dash or rather, a partial
+diamond shape, because a zero can never appear in the middle of the
+grid because that would immediately cause a loop.)
+
+Credit for this puzzle goes to \i{Nikoli} \k{nikoli-slant}.
+
+\B{nikoli-slant}
+\W{http://www.nikoli.co.jp/puzzles/39/index.htm}\cw{http://www.nikoli.co.jp/puzzles/39/index.htm}
+(in Japanese)
+
+\H{slant-controls} \i{Slant controls}
+
+\IM{Slant controls} controls, for Slant
+
+Left-clicking in a blank square will place a \cw{\\} in it (a line
+leaning to the left, i.e. running from the top left of the square to
+the bottom right). Right-clicking in a blank square will place a
+\cw{/} in it (leaning to the right, running from top right to bottom
+left).
+
+Continuing to click either button will cycle between the three
+possible square contents. Thus, if you left-click repeatedly in a
+blank square it will change from blank to \cw{\\} to \cw{/} back to
+blank, and if you right-click repeatedly the square will change from
+blank to \cw{/} to \cw{\\} back to blank. (Therefore, you can play
+the game entirely with one button if you need to.)
+
+(All the actions described in \k{common-actions} are also available.)
+
+\H{slant-parameters} \I{parameters, for Slant}Slant parameters
+
+These parameters are available from the \q{Custom...} option on the
+\q{Type} menu.
+
+\dt \e{Width}, \e{Height}
+
+\dd Size of grid in squares.
+
+\dt \e{Difficulty}
+
+\dd Controls the difficulty of the generated puzzle. At Hard level,
+you are required to do deductions based on knowledge of
+\e{relationships} between squares rather than always being able to
+deduce the exact contents of one square at a time. (For example, you
+might know that two squares slant in the same direction, even if you
+don't yet know what that direction is, and this might enable you to
+deduce something about still other squares.) Even at Hard level,
+guesswork and backtracking should never be necessary.
+
+
+\C{lightup} \i{Light Up}
+
+\cfg{winhelp-topic}{games.lightup}
+
+You have a grid of squares. Some are filled in black; some of the
+black squares are numbered. Your aim is to \q{light up} all the
+empty squares by placing light bulbs in some of them.
+
+Each light bulb illuminates the square it is on, plus all squares in
+line with it horizontally or vertically unless a black square is
+blocking the way.
+
+To win the game, you must satisfy the following conditions:
+
+\b All non-black squares are lit.
+
+\b No light is lit by another light.
+
+\b All numbered black squares have exactly that number of lights adjacent to
+   them (in the four squares above, below, and to the side).
+
+Non-numbered black squares may have any number of lights adjacent to them. 
+
+Credit for this puzzle goes to \i{Nikoli} \k{nikoli-lightup}.
+
+Light Up was contributed to this collection by James Harvey.
+
+\B{nikoli-lightup}
+\W{http://www.nikoli.co.jp/puzzles/32/index-e.htm}\cw{http://www.nikoli.co.jp/puzzles/32/index-e.htm}
+(beware of Flash)
+
+\H{lightup-controls} \i{Light Up controls}
+
+\IM{Light Up controls} controls, for Light Up
+
+Left-clicking in a non-black square will toggle the presence of a light
+in that square. Right-clicking in a non-black square toggles a mark there to aid
+solving; it can be used to highlight squares that cannot be lit, for example. 
+
+You may not place a light in a marked square, nor place a mark in a lit square.
+
+The game will highlight obvious errors in red. Lights lit by other
+lights are highlighted in this way, as are numbered squares which
+do not (or cannot) have the right number of lights next to them.
+  
+Thus, the grid is solved when all non-black squares have yellow
+highlights and there are no red lights.
+
+(All the actions described in \k{common-actions} are also available.)
+
+\H{lightup-parameters} \I{parameters, for Light Up}Light Up parameters
+
+These parameters are available from the \q{Custom...} option on the
+\q{Type} menu.
+
+\dt \e{Width}, \e{Height}
+
+\dd Size of grid in squares.
+
+\dt \e{%age of black squares}
+
+\dd Rough percentage of black squares in the grid.
+
+\lcont{
+
+This is a hint rather than an instruction. If the grid generator is
+unable to generate a puzzle to this precise specification, it will
+increase the proportion of black squares until it can.
+
+}
+
+\dt \e{Symmetry}
+
+\dd Allows you to specify the required symmetry of the black squares
+in the grid. (This does not affect the difficulty of the puzzles
+noticeably.)
+
+\dt \e{Difficulty}
+
+\dd \q{Easy} means that the puzzles should be soluble without
+backtracking or guessing, \q{Hard} means that some guesses will
+probably be necessary.
+
+
+\C{map} \i{Map}
+
+\cfg{winhelp-topic}{games.map}
+
+You are given a map consisting of a number of regions. Your task is
+to colour each region with one of four colours, in such a way that
+no two regions sharing a boundary have the same colour. You are
+provided with some regions already coloured, sufficient to make the
+remainder of the solution unique.
+
+Only regions which share a length of border are required to be
+different colours. Two regions which meet at only one \e{point}
+(i.e. are diagonally separated) may be the same colour.
+
+I believe this puzzle is original; I've never seen an implementation
+of it anywhere else. The concept of a four-colouring puzzle was
+suggested by Owen Dunn; credit must also go to Nikoli and to Verity
+Allan for inspiring the train of thought that led to me realising
+Owen's suggestion was a viable puzzle. Thanks also to Gareth Taylor
+for many detailed suggestions.
+
+\H{map-controls} \i{Map controls}
+
+\IM{Map controls} controls, for Map
+
+To colour a region, click the left mouse button on an existing
+region of the desired colour and drag that colour into the new
+region.
+
+(The program will always ensure the starting puzzle has at least one
+region of each colour, so that this is always possible!)
+
+If you need to clear a region, you can drag from an empty region, or
+from the puzzle boundary if there are no empty regions left.
+
+Dragging a colour using the \e{right} mouse button will stipple the
+region in that colour, which you can use as a note to yourself that
+you think the region \e{might} be that colour. A region can contain
+stipples in multiple colours at once. (This is often useful at the
+harder difficulty levels.)
+
+If you press L during play, the game will toggle display of a number
+in each region of the map. This is useful if you want to discuss a
+particular puzzle instance with a friend \dash having an unambiguous
+name for each region is much easier than trying to refer to them all
+by names such as \q{the one down and right of the brown one on the
+top border}.
+
+(All the actions described in \k{common-actions} are also available.)
+
+\H{map-parameters} \I{parameters, for Map}Map parameters
+
+These parameters are available from the \q{Custom...} option on the
+\q{Type} menu.
+
+\dt \e{Width}, \e{Height}
+
+\dd Size of grid in squares.
+
+\dt \e{Regions}
+
+\dd Number of regions in the generated map.
+
+\dt \e{Difficulty}
+
+\dd In \q{Easy} mode, there should always be at least one region
+whose colour can be determined trivially. In \q{Normal} and \q{Hard}
+modes, you will have to use increasingly complex logic to deduce the
+colour of some regions. However, it will always be possible without
+having to guess or backtrack.
+
+\lcont{
+
+In \q{Unreasonable} mode, the program will feel free to generate
+puzzles which are as hard as it can possibly make them: the only
+constraint is that they should still have a unique solution. Solving
+Unreasonable puzzles may require guessing and backtracking.
+
+}
+
+
+\C{loopy} \i{Loopy}
+
+\cfg{winhelp-topic}{games.loopy}
+
+You are given a grid of dots. Your aim is to draw a single unbroken
+loop from dot to dot within the grid.
+
+Some of the square spaces between the dots contain numbers. These
+numbers indicate how many of the four edges of that square are part
+of the loop. The loop you draw must correctly satisfy all of these
+clues to be considered a correct solution.
+
+Credit for this puzzle goes to \i{Nikoli} \k{nikoli-loopy}.
+
+Loopy was contributed to this collection by Mike Pinna.
+
+\B{nikoli-loopy}
+\W{http://www.nikoli.co.jp/puzzles/3/index-e.htm}\cw{http://www.nikoli.co.jp/puzzles/3/index-e.htm}
+(beware of Flash)
+
+\H{loopy-controls} \i{Loopy controls}
+
+\IM{Loopy controls} controls, for Loopy
+
+Click the left mouse button between two dots to add a line segment
+connecting them. Click again to remove that line segment.
+
+If you are sure that a particular line segment is \e{not} part of
+the loop, you can click the right mouse button to add a small cross
+indicating this. Click again to remove the cross.
+
+(All the actions described in \k{common-actions} are also available.)
+
+\H{loopy-parameters} \I{parameters, for Loopy}Loopy parameters
+
+These parameters are available from the \q{Custom...} option on the
+\q{Type} menu.
+
+\dt \e{Width}, \e{Height}
+
+\dd Size of grid in squares.
+
+\dt \e{Recursion depth}
+
+\dd Determines how much guesswork and backtracking you will need to
+do to solve the puzzle. When this is set to zero (as it is for all
+of the \q{Easy} options in the menu), you should always be able to
+deduce the state of an edge without having to guess. If you increase
+it, you will have to guess more and more.
+
+\lcont{
+
+Setting a high value for this option is liable to consume a lot of
+CPU time and memory. Be warned!
+
+}
+
+
+\C{inertia} \i{Inertia}
+
+\cfg{winhelp-topic}{games.inertia}
+
+You are a small green ball sitting in a grid full of obstacles. Your
+aim is to collect all the gems without running into any mines.
+
+You can move the ball in any orthogonal \e{or diagonal} direction.
+Once the ball starts moving, it will continue until something stops
+it. A wall directly in its path will stop it (but if it is moving
+diagonally, it will move through a diagonal gap between two other
+walls without stopping). Also, some of the squares are \q{stops};
+when the ball moves on to a stop, it will stop moving no matter what
+direction it was going in. Gems do \e{not} stop the ball; it picks
+them up and keeps on going.
+
+Running into a mine is fatal. Even if you picked up the last gem in
+the same move which then hit a mine, the game will count you as dead
+rather than victorious.
+
+This game was originally implemented for Windows by Ben Olmstead
+\k{bem}, who was kind enough to release his source code on request
+so that it could be re-implemented for this collection.
+
+\B{bem} \W{http://xn13.com/}\cw{http://xn13.com/}
+
+\H{inertia-controls} \i{Inertia controls}
+
+\IM{Inertia controls} controls, for Inertia
+\IM{Inertia controls} keys, for Inertia
+\IM{Inertia controls} shortcuts (keyboard), for Inertia
+
+You can move the ball in any of the eight directions using the
+numeric keypad. Alternatively, if you click the left mouse button on
+the grid, the ball will begin a move in the general direction of
+where you clicked.
+
+All the actions described in \k{common-actions} are also available.
+In particular, if you do run into a mine and die, you can use the
+Undo function and resume playing from before the fatal move. The
+game will keep track of the number of times you have done this.
+
+\H{inertia-parameters} \I{parameters, for Inertia}Inertia parameters
+
+These parameters are available from the \q{Custom...} option on the
+\q{Type} menu.
+
+\dt \e{Width}, \e{Height}
+
+\dd Size of grid in squares.
+
+
 \A{licence} \I{MIT licence}\ii{Licence}
 
 This software is \i{copyright} 2004-2005 Simon Tatham.
 
-Portions copyright Richard Boulton and James Harvey.
+Portions copyright Richard Boulton, James Harvey and Mike Pinna.
 
 Permission is hereby granted, free of charge, to any person
 obtaining a copy of this software and associated documentation files