mirror of
git://git.tartarus.org/simon/puzzles.git
synced 2025-04-21 08:01:30 -07:00
Substantial reworking of Solo so that it implements both Sudoku-X
(require both main diagonals to have one of every digit in addition to all the usual constraints) and Jigsaw Sudoku (replace the array of rectangular sub-blocks with the sub-blocks being random polyominoes). To implement the latter, I've moved my `divvy.c' library routine out of the `unfinished' subdirectory. Jigsaw mode is currently an undocumented feature: you enable it by setting the rows parameter to 1 (and the columns parameter to your desired grid size, which unlike normal Sudoku can be anything you like including a prime number). The reason it's undocumented is because generation times are not yet reliably short: sometimes generating a jigsaw-type puzzle can hang for hours and still get nowhere. (The algorithm should terminate in principle, but not in any time you're prepared to wait.) I _think_ I know how to solve this, but have yet to try it. Until then, jigsaw mode will remain a hidden feature. Printing of X-type puzzles is also substandard at present, because the current print-colour API replaces the desired light shading of the X-cells with heavy diagonal hatching. I plan to adjust the API imminently to address this. [originally from svn r7974]
This commit is contained in:
@ -930,6 +930,12 @@ rows, into which the main grid is divided. (The size of a block is
|
|||||||
the inverse of this: for example, if you select 2 columns and 3 rows,
|
the inverse of this: for example, if you select 2 columns and 3 rows,
|
||||||
each actual block will have 3 columns and 2 rows.)
|
each actual block will have 3 columns and 2 rows.)
|
||||||
|
|
||||||
|
You can introduce an optional extra constraint on the puzzles,
|
||||||
|
requiring that the two main diagonals of the grid also contain one
|
||||||
|
of every digit. (This is sometimes known as \q{Sudoku-X} in
|
||||||
|
newspapers.) In this mode, the squares on the two main diagonals
|
||||||
|
will be shaded slightly so that you know it's enabled.
|
||||||
|
|
||||||
You can also configure the type of symmetry shown in the generated
|
You can also configure the type of symmetry shown in the generated
|
||||||
puzzles. More symmetry makes the puzzles look prettier but may also
|
puzzles. More symmetry makes the puzzles look prettier but may also
|
||||||
make them easier, since the symmetry constraints can force more
|
make them easier, since the symmetry constraints can force more
|
||||||
|
@ -381,6 +381,12 @@ void reset_combi(combi_ctx *combi);
|
|||||||
combi_ctx *next_combi(combi_ctx *combi); /* returns NULL for end */
|
combi_ctx *next_combi(combi_ctx *combi); /* returns NULL for end */
|
||||||
void free_combi(combi_ctx *combi);
|
void free_combi(combi_ctx *combi);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* divvy.c
|
||||||
|
*/
|
||||||
|
/* divides w*h rectangle into pieces of size k. Returns w*h dsf. */
|
||||||
|
int *divvy_rectangle(int w, int h, int k, random_state *rs);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Data structure containing the function calls and data specific
|
* Data structure containing the function calls and data specific
|
||||||
* to a particular game. This is enclosed in a data structure so
|
* to a particular game. This is enclosed in a data structure so
|
||||||
|
12
solo.R
12
solo.R
@ -1,13 +1,15 @@
|
|||||||
# -*- makefile -*-
|
# -*- makefile -*-
|
||||||
|
|
||||||
solo : [X] GTK COMMON solo solo-icon|no-icon
|
SOLO = solo divvy dsf
|
||||||
|
|
||||||
solo : [G] WINDOWS COMMON solo solo.res|noicon.res
|
solo : [X] GTK COMMON SOLO solo-icon|no-icon
|
||||||
|
|
||||||
solosolver : [U] solo[STANDALONE_SOLVER] STANDALONE
|
solo : [G] WINDOWS COMMON SOLO solo.res|noicon.res
|
||||||
solosolver : [C] solo[STANDALONE_SOLVER] STANDALONE
|
|
||||||
|
|
||||||
ALL += solo
|
solosolver : [U] solo[STANDALONE_SOLVER] dsf STANDALONE
|
||||||
|
solosolver : [C] solo[STANDALONE_SOLVER] dsf STANDALONE
|
||||||
|
|
||||||
|
ALL += SOLO
|
||||||
|
|
||||||
!begin gtk
|
!begin gtk
|
||||||
GAMES += solo
|
GAMES += solo
|
||||||
|
Reference in New Issue
Block a user