Re: [xsl] A small programming challenge

Subject: Re: [xsl] A small programming challenge
From: Mukul Gandhi <mukul_gandhi@xxxxxxxxx>
Date: Wed, 22 Jun 2005 03:16:07 -0700 (PDT)
Hi Jim,
  Does the stylesheet which you have posted (written
by Oliver Becker) solves the same problem? Sorry I
have'nt studied it deeply. But if yes, what input you
gave it? And what output it produced..? Or does the
stylesheet takes the input from within?

Regards,
Mukul

--- James Fuller <jim.fuller@xxxxxxxxxxxxxx> wrote:

> u are aware of OliverB old stylesheet....
> 
> 
> <!-- 
>    The Sieve of Eratosthenes
>    GPL (c) Oliver Becker, 2000-06-13
>    obecker@xxxxxxxxxxxxxxxxxxxxxxx
> -->
> <xslt:transform
> xmlns:xslt="http://www.w3.org/1999/XSL/Transform";
> version="1.0">
> 
> <xslt:output method="text" />
> 
> <xslt:param name="bound" select="1000" />
> 
> <xslt:template match="/">
>    <xslt:call-template name="eratosthenes">
>       <xslt:with-param name="pos" select="2" />
>       <xslt:with-param name="array">
>          <xslt:call-template name="init-array">
>             <xslt:with-param name="length"
> select="$bound" />
>          </xslt:call-template>
>       </xslt:with-param>
>    </xslt:call-template>
>    <xslt:text>
> </xslt:text>
> </xslt:template>
> 
> 
> <!-- Initialize the array (string) with length
> $length -->
> <xslt:template name="init-array">
>    <xslt:param name="length" />
>    <xslt:if test="$length &gt; 0">
>       <xslt:text>-</xslt:text>
>       <xslt:call-template name="init-array">
>          <xslt:with-param name="length"
> select="$length - 1" />
>       </xslt:call-template>
>    </xslt:if>
> </xslt:template>
> 
> 
> <!-- Sieve of Eratosthenes: If the number at
> position $pos isn't 
>      marked then it's a prime (and printed). If the
> position of the
>      prime is lower or equal then the square root of
> $bound then the 
>      new array will be computed by marking all
> multiples of $pos. -->
> <xslt:template name="eratosthenes">
>    <xslt:param name="array" />
>    <xslt:param name="pos" />
>    <xslt:if test="$pos &lt; $bound">
>       <xslt:variable name="is-prime"
> select="substring($array,$pos,1) =
> '-'" />
>       <xslt:if test="$is-prime">
>          <xslt:value-of select="$pos" />, <xslt:text
> />
>       </xslt:if>
>       <xslt:variable name="new-array">
>          <xslt:choose>
>             <xslt:when test="$is-prime and $pos*$pos
> &lt;= $bound">
>                <xslt:call-template name="mark">
>                   <xslt:with-param name="array"
> select="$array" />
>                   <xslt:with-param name="number"
> select="$pos" />
>                </xslt:call-template>
>             </xslt:when>
>             <xslt:otherwise>
>                <xslt:value-of select="$array" />
>             </xslt:otherwise>
>          </xslt:choose>
>       </xslt:variable>
>       <xslt:call-template name="eratosthenes">
>          <xslt:with-param name="array"
> select="$new-array" />
>          <xslt:with-param name="pos" select="$pos +
> 1" />
>       </xslt:call-template>
>    </xslt:if>
> </xslt:template>
> 
> 
> <!-- Mark all multiples of $number in $array with
> '*' -->
> <xslt:template name="mark">
>    <xslt:param name="array" />
>    <xslt:param name="number" />
>    <xslt:choose>
>       <xslt:when test="string-length($array) &gt;
> $number">
>          <xslt:value-of select="substring ($array,
> 1, $number - 1)" />
>          <xslt:text>*</xslt:text>
>          <xslt:call-template name="mark">
>             <xslt:with-param name="array"
> select="substring ($array,
> $number + 1)" />
>             <xslt:with-param name="number"
> select="$number" />
>          </xslt:call-template>
>       </xslt:when>
>       <xslt:otherwise>
>          <xslt:value-of select="$array" />
>       </xslt:otherwise>
>    </xslt:choose>
> </xslt:template>
> 
> </xslt:transform>
> 
> 
> this will take quite a long time...though uses no
> extension functions, I
> would utilize other approaches to search the problem
> domain if simply
> contrained by the requirement of being prime and 10
> digit length.
> 
> wish I had the time, though will process in the
> background on a solution
> to this.
> 
> cheers, Jim Fuller
> 
> 



		
____________________________________________________ 
Yahoo! Sports 
Rekindle the Rivalries. Sign up for Fantasy Football 
http://football.fantasysports.yahoo.com

Current Thread