Subject: Re: [xsl] comparing sequences that contain more than one of the same item From: Robert Koberg <rob@xxxxxxxxxx> Date: Fri, 22 Feb 2008 09:12:57 -0500 |
Oh, sorry. Read too fast. Dmitry probably has this handled in FXSL (or will :) ) best, -Rob On Fri, 2008-02-22 at 14:08 +0000, Andrew Welch wrote: > The goal is to give you all possible words that can be made out of a given word. > > So for "farmer" you get: > > framer > armer > farer > frame > rearm > fame > fare > ... > > So I'm looking for a comparison that checks if a word can be made out > of the letters of another word. > > The recursive function that I wrote 10 mins ago looks like this, where > $searchWord would be the codepoints for "farmer", and $wordListWord > would be any word from my list of words: > > <xsl:function name="f:checkWord" as="xs:boolean"> > <xsl:param name="searchWord" as="xs:integer*"/> > <xsl:param name="wordListWord" as="xs:integer*"/> > > <xsl:variable name="firstChar" select="$wordListWord[1]" as="xs:integer?"/> > > <xsl:choose> > <xsl:when test="empty($wordListWord)"> > <xsl:sequence select="true()"/> > </xsl:when> > <xsl:when test="empty($searchWord)"> > <xsl:sequence select="false()"/> > </xsl:when> > <xsl:when test="$firstChar = $searchWord"> > <xsl:sequence select="f:checkWord(remove($searchWord, > index-of($searchWord, $firstChar)[1]), remove($wordListWord, 1))"/> > </xsl:when> > <xsl:otherwise> > <xsl:sequence select="false()"/> > </xsl:otherwise> > </xsl:choose> > </xsl:function> > > > > > > On 22/02/2008, Robert Koberg <rob@xxxxxxxxxx> wrote: > > > > contains(str1, str2) > > > > ? > > > > > > On Fri, 2008-02-22 at 13:57 +0000, Andrew Welch wrote: > > > A bit of a Friday challenge... > > > > > > Is it possible to compare to sequences such that items in the sequence > > > are consumed after the comparison? > > > > > > For example, I want to compare two words to see if one is a subset of the other. > > > > > > "farmer" and "frame" > > > > > > If you do: > > > > > > string-to-codepoints('farmer')[not(. = string-to-codepoints('frame'))] > > > > > > the result is empty because the two r's in farmer are both being > > > compared to the single r in frame. > > > > > > Currently I've a got a recursive function that removes each letter > > > after a match, but I'm wondering if there's a one-liner or some other > > > set based approach? > > > > > > > > > thanks
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] comparing sequences that , Andrew Welch | Thread | Re: [xsl] comparing sequences that , Ronan Klyne |
Re: [xsl] XPath Best Practice: Gett, Florent Georges | Date | Re: [xsl] comparing sequences that , Ronan Klyne |
Month |