Simon Tatham 517b14e666 Palisade: replace dfs_dsf() with a simple iteration.
The whole purpose of a dsf is that you can traverse the edges of your
graph in any order you feel like. So if you want to build the
connected components of a graph you can just loop over all the edges
once. There's no need to run a depth-first search.

In fact there were an amazing number of things wrong with this 10-line
function:

 - As Ben points out in commit 21193eaf9308ace, it didn't bother with
   bounds checking when searching the grid, instead relying on the
   never-removed grid boundary to stop the search - which was fragile in
   the face of other bugs.

 - The recursion uses linear stack, which is much worse than linear
   heap, since stacks are often much more limited. (And the dsf _also_
   used linear heap.)

 - The recursion was completely unnecessary.

 - The function used internal knowledge about dsf.c in order to define
   the value UNVISITED to match what would happen to work.

 - The name 'dfs_dsf' is totally confusing and almost impossible to
   type!
2023-02-03 23:22:49 +00:00
2023-01-23 23:50:39 +00:00
2021-04-25 09:59:15 +01:00
2023-01-31 23:25:05 +00:00
2023-01-31 23:25:05 +00:00
2018-11-13 21:48:24 +00:00
2023-01-31 23:25:05 +00:00
2023-01-31 23:25:05 +00:00
2023-01-31 23:25:05 +00:00
2023-01-31 23:25:05 +00:00
2023-01-16 10:43:41 +00:00
2023-01-15 20:59:22 +00:00
2023-01-15 16:24:27 +00:00
2023-01-15 16:24:27 +00:00
2023-01-31 23:25:05 +00:00
2023-01-31 23:25:05 +00:00
2023-01-31 23:25:05 +00:00
2021-03-29 19:02:23 +01:00
2018-11-13 21:48:24 +00:00
2023-01-31 23:25:05 +00:00
2023-01-31 23:25:05 +00:00
2023-01-31 23:25:05 +00:00
2018-11-13 21:48:24 +00:00
2023-01-16 10:46:13 +00:00
2023-01-31 23:25:05 +00:00
2023-02-01 23:00:14 +00:00
2018-11-13 21:48:24 +00:00
2023-01-31 23:25:05 +00:00
2023-02-02 23:09:19 +00:00
2023-01-31 23:25:05 +00:00
2017-09-20 18:03:44 +01:00
2023-02-01 00:40:07 +00:00
2021-05-21 09:10:53 +01:00
2023-01-31 23:25:05 +00:00
2021-03-29 19:02:23 +01:00
2023-01-31 23:25:05 +00:00
2023-01-31 23:25:05 +00:00
2023-01-31 23:25:05 +00:00
2023-01-31 23:25:05 +00:00
2023-01-31 23:25:05 +00:00
2018-11-13 21:48:24 +00:00
2023-01-31 23:25:05 +00:00
2023-01-31 23:25:05 +00:00
2023-01-31 23:25:05 +00:00
2023-01-31 23:25:05 +00:00
2023-01-31 23:25:05 +00:00
2017-05-07 16:25:56 +01:00

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

The puzzle collection is built using CMake <https://cmake.org/>. To
compile in the simplest way (on any of Linux, Windows or Mac), run
these commands in the source directory:

  cmake .
  cmake --build .

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
<https://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%