- From: <bugzilla@farnsworth.w3.org>
- Date: Thu, 10 Apr 2008 22:17:21 +0000
- To: public-qt-comments@w3.org
- CC:
http://www.w3.org/Bugs/Public/show_bug.cgi?id=5620 ------- Comment #1 from thomas.baby@oracle.com 2008-04-10 22:17 ------- Michael Dyck and I have fixed this issue and other issues in the FTTimes neighborhood. We have added a new function called fts:FormCombinationsAtLeast, which generates $k-or-more combinations of a sequence, by repeatedly invoking fts:FormCombinations. fts:FormCombinations is an existing function that generates $k combinations of a sequence. Some of the base case checks in fts:FormCombinations have also been fixed. The new functions are included below: declare function fts:FormCombinations ( $sms as element(fts:match)*, $k as xs:integer ) as element(fts:match)* (: Find all combinations of exactly $k elements from $sms, and for each such combination, construct a match whose children are copies of all the children of all the elements in the combination. Return the sequence of all such matches. :) { if ($k eq 0) then <fts:match/> else if (fn:count($sms) lt $k) then () else if (fn:count($sms) eq $k) then <fts:match>{$sms/*}</fts:match> else let $first := $sms[1], $rest := fn:subsequence($sms, 2) return ( (: all the combinations that don't involve $first :) fts:FormCombinations($rest, $k), (: and all the combinations that do involve $first :) for $combination in fts:FormCombinations($rest, $k - 1) return <fts:match> { $first/*, $combination/* } </fts:match> ) }; declare function fts:FormCombinationsAtLeast ( $sms as element(fts:match)*, $times as xs:integer) as element(fts:match)* (: Find all combinations of $times or more elements from $sms, and for each such combination, construct a match whose children are copies of all the children of all the elements in the combination. Return the sequence of all such matches. :) { for $k in $times to fn:count($sms) return fts:FormCombinations($sms, $k) };
Received on Thursday, 10 April 2008 22:18:20 UTC