Comment detail
正整数のゲーデル数化? (Nested Flatten)ちょっと付け足した部分がエラーになってた orz
1 2 3 4 | 24c24
< <xsl:if test="n<=0">
---
> <xsl:if test="$n<=0">
|
ちょっと付け足した部分がエラーになってた orz
1 2 3 4 | 24c24
< <xsl:if test="n<=0">
---
> <xsl:if test="$n<=0">
|
turugina
#6582()
[
XSLT
]
Rating0/0=0.00
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2005/xpath-functions" xmlns:my="uri:ja.doukaku.org:my-functions" exclude-result-prefixes="my" > <xsl:output method="text" /> <xsl:template match="/" > <xsl:text>geodel(9)=</xsl:text> <xsl:value-of select="my:goedel(9)" /> <xsl:text>
goedel(81)=</xsl:text> <xsl:value-of select="my:goedel(81)" /> <xsl:text>
goedel(230)=</xsl:text> <xsl:value-of select="my:goedel(230)" /> <xsl:text>
</xsl:text> </xsl:template> <xsl:function name="my:goedel" as="xs:integer"> <xsl:param name="n" as="xs:integer" /> <xsl:if test="n<=0"> <xsl:message terminate="yes"> n must be positive integer </xsl:message> </xsl:if> <xsl:variable name="n_" as="xs:string" select="xs:string($n)" /> <xsl:variable name="primes" as="xs:integer*" select="my:primes(fn:string-length($n_))" /> <xsl:variable name="elem" as="xs:integer*"> <xsl:for-each select="fn:string-to-codepoints($n_)"> <xsl:variable name="i" as="xs:integer" select="xs:integer(fn:codepoints-to-string((.)))" /> <xsl:variable name="idx" as="xs:integer" select="position()" /> <xsl:sequence select="my:power($primes[$idx],$i)" /> </xsl:for-each> </xsl:variable> <xsl:value-of select="my:PI($elem)" /> </xsl:function> <xsl:function name="my:power" as="xs:integer"> <xsl:param name="n" as="xs:integer" /> <xsl:param name="m" as="xs:integer" /> <xsl:choose> <xsl:when test="$m=0"> <xsl:value-of select="1" /> </xsl:when> <xsl:otherwise> <xsl:value-of select="$n*my:power($n,$m - 1)" /> </xsl:otherwise> </xsl:choose> </xsl:function> <xsl:function name="my:primes" as="xs:integer*"> <xsl:param name="n" as="xs:integer" /> <xsl:sequence select="my:primes_($n,2,())" /> </xsl:function> <xsl:function name="my:primes_" as="xs:integer*"> <xsl:param name="n" as="xs:integer" /> <xsl:param name="m" as="xs:integer" /> <xsl:param name="r" as="xs:integer*" /> <xsl:choose> <xsl:when test="$n=0"> <xsl:sequence select="$r" /> </xsl:when> <xsl:otherwise> <xsl:variable name="is_prime" as="xs:boolean" select="fn:empty($r[($m mod .)=0])" /> <xsl:choose> <xsl:when test="$is_prime"> <xsl:variable name="r_" as="xs:integer*"> <xsl:sequence select="$r" /> <xsl:sequence select="$m" /> </xsl:variable> <xsl:sequence select="my:primes_($n - 1,$m + 1, $r_)" /> </xsl:when> <xsl:otherwise> <xsl:sequence select="my:primes_($n,$m + 1, $r)" /> </xsl:otherwise> </xsl:choose> </xsl:otherwise> </xsl:choose> </xsl:function> <xsl:function name="my:PI" as="xs:integer"> <xsl:param name="seq" as="xs:integer*" /> <xsl:choose> <xsl:when test="fn:empty($seq)" > <xsl:value-of select="0" /> </xsl:when> <xsl:when test="fn:count($seq)=1"> <xsl:value-of select="$seq[1]" /> </xsl:when> <xsl:otherwise> <xsl:value-of select="$seq[1] * my:PI(fn:subsequence($seq,2))" /> </xsl:otherwise> </xsl:choose> </xsl:function> </xsl:stylesheet>Rating0/0=0.00-0+
1 reply [ reply ]