xsl-list
[Top] [All Lists]

Re: [xsl] Duplicates in a sequence ?

2015-03-25 12:03:20
Nice xPath 3.1 approach, thanks.

On 25.03.2015, at 12:31, Michael Kay mike(_at_)saxonica(_dot_)com 
<xsl-list-service(_at_)lists(_dot_)mulberrytech(_dot_)com> wrote:

I don't know of a better solution.

If the sequences are very long and you want something that will stop as soon 
as it hits the first duplicate, you could use recursion and maps:

function has-dupes ($in as xs:integer*, $found as map(*)) { 
 map:contains($found, head($in)) or has-dupes(tail($in), map:put($found, 
head($in), 0) 
}

then

has-dupes($sequence, map{})

Michael Kay
Saxonica
mike(_at_)saxonica(_dot_)com
+44 (0) 118 946 5893




On 25 Mar 2015, at 10:58, Leo Studer leo(_dot_)studer(_at_)varioweb(_dot_)ch 
<xsl-list-service(_at_)lists(_dot_)mulberrytech(_dot_)com> wrote:

Hello

I have a sequence and want to know whether there are duplicate values in it.

I came out with the following and think there must be an easy solution. Any 
suggestion?

let $sequence :=(1,12,14,17,22,12) return (count(distinct-values($sequence)) 
ne count($sequence))
--~----------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
EasyUnsubscribe: http://lists.mulberrytech.com/unsub/xsl-list/1167547
or by email: xsl-list-unsub(_at_)lists(_dot_)mulberrytech(_dot_)com
--~--

<Prev in Thread] Current Thread [Next in Thread>