mirror of
git://git.tartarus.org/simon/puzzles.git
synced 2025-04-20 23:51:29 -07:00
New puzzle! 'Keen', a clone of KenKen.
[originally from svn r8796]
This commit is contained in:
2
dsf.c
2
dsf.c
@ -165,7 +165,7 @@ void edsf_merge(int *dsf, int v1, int v2, int inverse)
|
|||||||
* We always make the smaller of v1 and v2 the new canonical
|
* We always make the smaller of v1 and v2 the new canonical
|
||||||
* element. This ensures that the canonical element of any
|
* element. This ensures that the canonical element of any
|
||||||
* class in this structure is always the first element in
|
* class in this structure is always the first element in
|
||||||
* it.
|
* it. 'Keen' depends critically on this property.
|
||||||
*
|
*
|
||||||
* (Jonas Koelker previously had this code choosing which
|
* (Jonas Koelker previously had this code choosing which
|
||||||
* way round to connect the trees by examining the sizes of
|
* way round to connect the trees by examining the sizes of
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
# Makefile for Puzzles icons.
|
# Makefile for Puzzles icons.
|
||||||
|
|
||||||
PUZZLES = blackbox bridges cube dominosa fifteen filling flip galaxies guess \
|
PUZZLES = blackbox bridges cube dominosa fifteen filling flip galaxies guess \
|
||||||
inertia lightup loopy map mines net netslide pattern pegs rect \
|
inertia keen lightup loopy map mines net netslide pattern pegs \
|
||||||
samegame sixteen slant solo tents twiddle unequal untangle
|
rect samegame sixteen slant solo tents twiddle unequal untangle
|
||||||
|
|
||||||
BASE = $(patsubst %,%-base.png,$(PUZZLES))
|
BASE = $(patsubst %,%-base.png,$(PUZZLES))
|
||||||
WEB = $(patsubst %,%-web.png,$(PUZZLES))
|
WEB = $(patsubst %,%-web.png,$(PUZZLES))
|
||||||
@ -60,6 +60,7 @@ flip-ibase.png : override CROP=288x288 145x145+120+72
|
|||||||
galaxies-ibase.png : override CROP=288x288 165x165+0+0
|
galaxies-ibase.png : override CROP=288x288 165x165+0+0
|
||||||
guess-ibase.png : override CROP=263x420 178x178+75+17
|
guess-ibase.png : override CROP=263x420 178x178+75+17
|
||||||
inertia-ibase.png : override CROP=321x321 128x128+193+0
|
inertia-ibase.png : override CROP=321x321 128x128+193+0
|
||||||
|
keen-ibase.png : override CROP=288x288 96x96+24+120
|
||||||
lightup-ibase.png : override CROP=256x256 112x112+144+0
|
lightup-ibase.png : override CROP=256x256 112x112+144+0
|
||||||
loopy-ibase.png : override CROP=257x257 113x113+0+0
|
loopy-ibase.png : override CROP=257x257 113x113+0+0
|
||||||
mines-ibase.png : override CROP=240x240 110x110+130+130
|
mines-ibase.png : override CROP=240x240 110x110+130+130
|
||||||
|
62
icons/keen.sav
Normal file
62
icons/keen.sav
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
SAVEFILE:41:Simon Tatham's Portable Puzzle Collection
|
||||||
|
VERSION :1:1
|
||||||
|
GAME :4:Keen
|
||||||
|
PARAMS :3:5de
|
||||||
|
CPARAMS :3:5de
|
||||||
|
SEED :15:846699649745236
|
||||||
|
DESC :48:a__a_3a_5a_a_a_3b_bac_,a5m15a7a10s2s2d2s3m40m2s2
|
||||||
|
AUXINFO :52:6105af67c6ebc8de056b59ebc9a463aa54e75f647055c0a6c1bd
|
||||||
|
NSTATES :2:53
|
||||||
|
STATEPOS:2:39
|
||||||
|
MOVE :6:P0,4,2
|
||||||
|
MOVE :6:P0,4,4
|
||||||
|
MOVE :6:P0,4,5
|
||||||
|
MOVE :6:P1,4,2
|
||||||
|
MOVE :6:P1,4,4
|
||||||
|
MOVE :6:P1,4,5
|
||||||
|
MOVE :6:P1,3,2
|
||||||
|
MOVE :6:P1,3,4
|
||||||
|
MOVE :6:P1,3,5
|
||||||
|
MOVE :6:R2,2,4
|
||||||
|
MOVE :6:R1,2,2
|
||||||
|
MOVE :6:P1,3,2
|
||||||
|
MOVE :6:P1,4,2
|
||||||
|
MOVE :6:R0,4,2
|
||||||
|
MOVE :6:R2,3,2
|
||||||
|
MOVE :6:R2,4,1
|
||||||
|
MOVE :6:R1,4,4
|
||||||
|
MOVE :6:R1,3,5
|
||||||
|
MOVE :6:P3,4,3
|
||||||
|
MOVE :6:P3,4,5
|
||||||
|
MOVE :6:P4,4,3
|
||||||
|
MOVE :6:P4,4,5
|
||||||
|
MOVE :6:R4,4,5
|
||||||
|
MOVE :6:R3,4,3
|
||||||
|
MOVE :6:P3,1,2
|
||||||
|
MOVE :6:P3,1,5
|
||||||
|
MOVE :6:P3,0,2
|
||||||
|
MOVE :6:P3,0,5
|
||||||
|
MOVE :6:R3,2,1
|
||||||
|
MOVE :6:R3,3,4
|
||||||
|
MOVE :6:P2,0,3
|
||||||
|
MOVE :6:P2,0,5
|
||||||
|
MOVE :6:P2,1,3
|
||||||
|
MOVE :6:P2,1,5
|
||||||
|
MOVE :6:P0,1,1
|
||||||
|
MOVE :6:P0,1,3
|
||||||
|
MOVE :6:P1,1,1
|
||||||
|
MOVE :6:P1,1,3
|
||||||
|
MOVE :6:R2,0,3
|
||||||
|
MOVE :6:R2,1,5
|
||||||
|
MOVE :6:R3,0,5
|
||||||
|
MOVE :6:R3,1,2
|
||||||
|
MOVE :6:R4,1,4
|
||||||
|
MOVE :6:R4,2,3
|
||||||
|
MOVE :6:R4,0,2
|
||||||
|
MOVE :6:R4,3,1
|
||||||
|
MOVE :6:R0,2,5
|
||||||
|
MOVE :6:R0,3,3
|
||||||
|
MOVE :6:R1,1,3
|
||||||
|
MOVE :6:R0,1,1
|
||||||
|
MOVE :6:R1,0,1
|
||||||
|
MOVE :6:R0,0,4
|
25
keen.R
Normal file
25
keen.R
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
# -*- makefile -*-
|
||||||
|
|
||||||
|
KEEN_LATIN_EXTRA = tree234 maxflow dsf
|
||||||
|
KEEN_EXTRA = latin KEEN_LATIN_EXTRA
|
||||||
|
|
||||||
|
keen : [X] GTK COMMON keen KEEN_EXTRA keen-icon|no-icon
|
||||||
|
|
||||||
|
keen : [G] WINDOWS COMMON keen KEEN_EXTRA keen.res|noicon.res
|
||||||
|
|
||||||
|
keensolver : [U] keen[STANDALONE_SOLVER] latin[STANDALONE_SOLVER] KEEN_LATIN_EXTRA STANDALONE
|
||||||
|
keensolver : [C] keen[STANDALONE_SOLVER] latin[STANDALONE_SOLVER] KEEN_LATIN_EXTRA STANDALONE
|
||||||
|
|
||||||
|
ALL += keen[COMBINED] KEEN_EXTRA
|
||||||
|
|
||||||
|
!begin gtk
|
||||||
|
GAMES += keen
|
||||||
|
!end
|
||||||
|
|
||||||
|
!begin >list.c
|
||||||
|
A(keen) \
|
||||||
|
!end
|
||||||
|
|
||||||
|
!begin >wingames.lst
|
||||||
|
keen.exe:Keen
|
||||||
|
!end
|
110
puzzles.but
110
puzzles.but
@ -22,6 +22,12 @@
|
|||||||
|
|
||||||
\define{dash} \u2013{-}
|
\define{dash} \u2013{-}
|
||||||
|
|
||||||
|
\define{times} \u00D7{*}
|
||||||
|
|
||||||
|
\define{divide} \u00F7{/}
|
||||||
|
|
||||||
|
\define{minus} \u2212{-}
|
||||||
|
|
||||||
This is a collection of small one-player puzzle games.
|
This is a collection of small one-player puzzle games.
|
||||||
|
|
||||||
\copyright This manual is copyright 2004-2009 Simon Tatham. All rights
|
\copyright This manual is copyright 2004-2009 Simon Tatham. All rights
|
||||||
@ -2450,6 +2456,110 @@ Filling allows you to configure the number of rows and columns of the
|
|||||||
grid, through the \q{Type} menu.
|
grid, through the \q{Type} menu.
|
||||||
|
|
||||||
|
|
||||||
|
\C{keen} \i{Keen}
|
||||||
|
|
||||||
|
\cfg{winhelp-topic}{games.keen}
|
||||||
|
|
||||||
|
You have a square grid; each square may contain a digit from 1 to
|
||||||
|
the size of the grid. The grid is divided into blocks of varying
|
||||||
|
shape and size, with arithmetic clues written in them. Your aim is
|
||||||
|
to fully populate the grid with digits such that:
|
||||||
|
|
||||||
|
\b Each row contains only one occurrence of each digit
|
||||||
|
|
||||||
|
\b Each column contains only one occurrence of each digit
|
||||||
|
|
||||||
|
\b The digits in each block can be combined to form the number
|
||||||
|
stated in the clue, using the arithmetic operation given in the
|
||||||
|
clue. That is:
|
||||||
|
|
||||||
|
\lcont{
|
||||||
|
|
||||||
|
\b An addition clue means that the sum of the digits in the block
|
||||||
|
must be the given number. For example, \q{15+} means the contents of
|
||||||
|
the block adds up to fifteen.
|
||||||
|
|
||||||
|
\b A multiplication clue (e.g. \q{60\times}), similarly, means that
|
||||||
|
the product of the digits in the block must be the given number.
|
||||||
|
|
||||||
|
\b A subtraction clue will always be written in a block of size two,
|
||||||
|
and it means that one of the digits in the block is greater than the
|
||||||
|
other by the given amount. For example, \q{2\minus} means that one
|
||||||
|
of the digits in the block is 2 more than the other, or equivalently
|
||||||
|
that one digit minus the other one is 2. The two digits could be
|
||||||
|
either way round, though.
|
||||||
|
|
||||||
|
\b A division clue (e.g. \q{3\divide}), similarly, is always in a
|
||||||
|
block of size two and means that one digit divided by the other is
|
||||||
|
equal to the given amount.
|
||||||
|
|
||||||
|
Note that a block may contain more than one digit the same (provided
|
||||||
|
the identical ones are not in the same row and column). This rule is
|
||||||
|
precisely the opposite of the rule in Solo's \q{Killer} mode (see
|
||||||
|
\k{solo}).
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
This puzzle appears in the Times under the name \q{KenKen}.
|
||||||
|
|
||||||
|
|
||||||
|
\H{keen-controls} \i{Keen controls}
|
||||||
|
|
||||||
|
\IM{Keen controls} controls, for Keen
|
||||||
|
|
||||||
|
Keen shares much of its control system with Solo (and Unequal).
|
||||||
|
|
||||||
|
To play Keen, simply click the mouse in any empty square and then
|
||||||
|
type a digit on the keyboard to fill that square. If you make a
|
||||||
|
mistake, click the mouse in the incorrect square and press Space to
|
||||||
|
clear it again (or use the Undo feature).
|
||||||
|
|
||||||
|
If you \e{right}-click in a square and then type a number, that
|
||||||
|
number will be entered in the square as a \q{pencil mark}. You can
|
||||||
|
have pencil marks for multiple numbers in the same square. Squares
|
||||||
|
containing filled-in numbers cannot also contain pencil marks.
|
||||||
|
|
||||||
|
The game pays no attention to pencil marks, so exactly what you use
|
||||||
|
them for is up to you: you can use them as reminders that a
|
||||||
|
particular square needs to be re-examined once you know more about a
|
||||||
|
particular number, or you can use them as lists of the possible
|
||||||
|
numbers in a given square, or anything else you feel like.
|
||||||
|
|
||||||
|
To erase a single pencil mark, right-click in the square and type
|
||||||
|
the same number again.
|
||||||
|
|
||||||
|
All pencil marks in a square are erased when you left-click and type
|
||||||
|
a number, or when you left-click and press space. Right-clicking and
|
||||||
|
pressing space will also erase pencil marks.
|
||||||
|
|
||||||
|
As for Solo, the cursor keys can be used in conjunction with the
|
||||||
|
digit keys to set numbers or pencil marks. Use the cursor keys to
|
||||||
|
move a highlight around the grid, and type a digit to enter it in
|
||||||
|
the highlighted square. Pressing return toggles the highlight into a
|
||||||
|
mode in which you can enter or remove pencil marks.
|
||||||
|
|
||||||
|
Pressing M will fill in a full set of pencil marks in every square
|
||||||
|
that does not have a main digit in it.
|
||||||
|
|
||||||
|
(All the actions described in \k{common-actions} are also available.)
|
||||||
|
|
||||||
|
\H{keen-parameters} \I{parameters, for Keen}Keen parameters
|
||||||
|
|
||||||
|
These parameters are available from the \q{Custom...} option on the
|
||||||
|
\q{Type} menu.
|
||||||
|
|
||||||
|
\dt \e{Grid size}
|
||||||
|
|
||||||
|
\dd Specifies the size of the grid. Lower limit is 3; upper limit is
|
||||||
|
9 (because the user interface would become more difficult with
|
||||||
|
\q{digits} bigger than 9!).
|
||||||
|
|
||||||
|
\dt \e{Difficulty}
|
||||||
|
|
||||||
|
\dd Controls the difficulty of the generated puzzle. At Unreasonable
|
||||||
|
level, some backtracking will be required, but the solution should
|
||||||
|
still be unique. The remaining levels require increasingly complex
|
||||||
|
reasoning to avoid having to backtrack.
|
||||||
|
|
||||||
\A{licence} \I{MIT licence}\ii{Licence}
|
\A{licence} \I{MIT licence}\ii{Licence}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user