No, this one also counts similarities after the first differing character.
$x = "abcfff"; $y = "abcggg";
correctly gives 3, but just try out
$x = "abcfff"; $y = "abcgff";
which gives you 5 because of the matching "f"s.
This way it should work:
$_=$x^$y; $n=s/[^\0]//?$-[0]:()
A little toyed around with kynn's idea:
for(split//,$x){$_eq substr($y,$n++,1)||last}$n x=$n<length$y
-Christian
> -----Urspr�ngliche Nachricht-----
> Von: Terje Kristensen [mailto:[EMAIL PROTECTED]
> Gesendet: Mittwoch, 21. April 2004 07:49
> An: [EMAIL PROTECTED] Org
> Betreff: RE: mini-golf: first differing position
>
>
> This should work.
>
> $_=$x^$y;$n=s/\0//g||undef
>
> Terje
>
> > -----Original Message-----
> > From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]
> > Sent: Wednesday, April 21, 2004 2:02 AM
> > To: [EMAIL PROTECTED]
> > Cc: [EMAIL PROTECTED]
> > Subject: Re: mini-golf: first differing position
> >
> >
> >
> >
> > X-Original-To: [EMAIL PROTECTED]
> > Mailing-List: contact [EMAIL PROTECTED]; run by ezmlm
> > X-Spam-Status: No, hits=0.3 required=7.0
> > tests=NO_REAL_NAME
> > X-Spam-Check-By: la.mx.develooper.com
> > Date: Tue, 20 Apr 2004 19:57:27 -0400 (EDT)
> > From: <[EMAIL PROTECTED]>
> >
> >
> >
> >
> > We want to find out the first position $n at which
> strings $x and $y
> > differ. If $x eq $y, then $n is undef. If $x ne $y but $x is a
> > prefix (aka initial segment) of $y, then $n should be
> equal to length
> > $x. The operation must preserve both $x and $y (i.e. destructive
> > operations are disallowed).
> >
> > By way of baseline, here's an utterly uninspired solution:
> >
> > $n=0;while(($c=substr($x,$n,1)||undef $n) && $c eq
> > substr($y,$n++,1)){;}
> >
> > It's worse than uninspired, actually. It's wrong.
> >
> > kj
>