[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

RE: [xsl] [XSL] Accessing part of the result tree illustrated with "The Sudoku solver" example.


Subject: RE: [xsl] [XSL] Accessing part of the result tree illustrated with "The Sudoku solver" example.
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Wed, 5 Sep 2007 08:42:37 +0100

> But experts as you are, you would have noticed that there is a major 
> BUG: even when we have found the solution, the recursion continues!..
> So you can get "lucky" and find a solution in the first seconds, then 
> run for many minutes uselessly just terminating the recursion.

A Sudoku puzzle can in general have more than one solution, and I think,
without studying it in detail, that your code is written to find all the
solutions. If you only want the first solution, the answer is to do:

<xsl:variable name="all-solutions" as="...">
  ... your algorithm here ...
</xsl:variable>
<xsl:sequence select="$all-solutions[1]"/>

An intelligent pipelined XSLT processor will evaluate $all-solutions lazily,
and will recognize the "[1]" as indicating that after finding the first
element in $all-solutions, no further processing is needed.

Michael Kay
http://www.saxonica.com/


Current Thread
Keywords