Simon Tatham 79874f18e4 Fix homology bug (!) in Net's loop highlighter.
I unthinkingly transplanted into Net the same loop-finding algorithm
used in Loopy and Slant, which identifies the connected components
into which the grid lines divide the plane, and marks an edge as part
of a loop iff it separates two different components. This works fine
for a planar graph, but in Net's wrapping mode, it's possible to have
loops which do not have this property - e.g. a loop can go off the top
of the grid and back on the bottom to join up with itself, and then
it _doesn't_ disconnect the surface into two components.

(In principle, this kind of problem can turn up in any topological
space with a non-trivial H_1 homology group, which is why it fails on
the torus to which Net's wrapping mode corresponds, but not on the
plane or sphere. I think it's forgivable that I hadn't expected
homology to be the cause of any bug in practical code ever!)

Fixed by inventing yet another dsf-based loop-finding algorithm, this
one based on tracing round the outside of connected components of the
graph. It's still not _fully_ general, in that this one still depends
on the graph being drawn on an orientable surface (so it'll need
another rewrite if I ever add Mobius strip or Klein bottle modes for
Net...), but it's fairly simple to state and implement, and detects
loops that the previous implementation did not, such as the one in the
starting position of 3x3w:1a39ac6a8 .
2014-12-29 10:11:47 +00:00
2014-10-27 21:58:10 +00:00
2014-09-24 10:33:21 +00:00
2009-12-27 10:01:23 +00:00
2014-11-30 17:00:45 +00:00
2014-10-20 17:43:38 +00:00
2011-04-05 18:05:57 +00:00
2014-09-24 10:33:21 +00:00
2007-02-24 19:33:38 +00:00
2014-09-24 10:33:21 +00:00

This is the README accompanying the source code to Simon Tatham's
puzzle collection. The collection's web site is at
<http://www.chiark.greenend.org.uk/~sgtatham/puzzles/>.

If you've obtained the source code by downloading a .tar.gz archive
from the Puzzles web site, you should find several Makefiles in the
source code. However, if you've checked the source code out from the
Puzzles Subversion repository, you won't find the Makefiles: they're
automatically generated by `mkfiles.pl', so run that to create them.

The Makefiles include:

 - `Makefile' should work under GNU make on Linux, provided you have
   GTK installed to compile and link against. It builds GTK binaries
   of the puzzle games.

 - `Makefile.vc' should work under MS Visual C++ on Windows.

 - `Makefile.cyg' should work under Cygwin / MinGW. With appropriate
   tweaks and setting of TOOLPATH, it should work for both compiling
   on Windows and cross-compiling on Unix.

 - `Makefile.osx' should work under Mac OS X, provided the Xcode
   tools are installed. It builds a single monolithic OS X
   application capable of running any of the puzzles, or even more
   than one of them at a time.

 - `Makefile.wce' should work under MS eMbedded Visual C++ on
   Windows and the Pocket PC SDK; it builds Pocket PC binaries.

Many of these Makefiles build a program called `nullgame' in
addition to the actual game binaries. This program doesn't do
anything; it's just a template for people to start from when adding
a new game to the collection, and it's compiled every time to ensure
that it _does_ compile and link successfully (because otherwise it
wouldn't be much use as a template). Once it's built, you can run it
if you really want to (but it's very boring), and then you should
ignore it.

DO NOT EDIT THE MAKEFILES DIRECTLY, if you plan to send any changes
back to the maintainer. The makefiles are generated automatically by
the Perl script `mkfiles.pl' from the file `Recipe' and the various
.R files. If you need to change the makefiles as part of a patch,
you should change Recipe, *.R, and/or mkfiles.pl.

The manual is provided in Windows Help format for the Windows build;
in text format for anyone who needs it; and in HTML for the Mac OS X
application and for the web site. It is generated from a Halibut
source file (puzzles.but), which is the preferred form for
modification. To generate the manual in other formats, rebuild it,
or learn about Halibut, visit the Halibut website at
<http://www.chiark.greenend.org.uk/~sgtatham/halibut/>.
Description
No description provided
Readme 26 MiB
Languages
C 93.3%
JavaScript 1.4%
Objective-C 1.1%
CMake 1.1%
HTML 0.8%
Other 2.2%