The Challenge (was whole(string) is in a fld)
Dave Cragg
dave.cragg at lacscentre.co.uk
Wed Jun 13 15:16:12 CDT 2007
Hi Hugh
Usual technique to seek extra time from a client is to ask more
questions. :-)
I assume the string has to match on the start of a word boundary.
e.g.
put "This is a test." into sourceText (note the punctuation)
whole("is is a test",sourceText) => FALSE
Case-sensitivity?
Dave
On 13 Jun 2007, at 20:35, FlexibleLearning at aol.com wrote:
> The Challenge:
> "Write a function that returns TRUE or FALSE for the existence of
> any valid
> text string existing within any longer text string. (To make
> things easier we
> limit this to ASCII text; right-to-left double-bite Unicode
> character reco
> gnition can come later :-)"
>
> e.g.
> put "This is a test-piece." into sourceText (note the punctuation)
> whole("This is a test",sourceText) => FALSE
> whole("This is a test-piece",sourceText) => TRUE
>
>
>
> 1. Philip's "creative thinking" entry (that unfortunately only
> handles
> tail-end period punctuation):
>
>> put "This is a test." into myLine
>> replace " " with "*" in myLine
>> put fld 1 into myField
>> replace ". " with ".#" in myField (note : period + space. use
>> two spaces
> if needed)
>> replace space with "*" in myField
>> replace "#" with space in myField
>> if myLine is among the words of myField then return true
>
>
>
> 2. Dave's "almost there" entry....
>
>> This doesn't check that the matched target starts on a word
>> boundary,
>> But a simple check on char (tOff -1) or whether tOff is at the
>> beginning of the target shoud do it.
>>
>> function whole s,t
>> put length(s) into tNumChars
>> put ",.;:?!" & space & tab & cr & numToChar(13) into tWB
>> put offset(s,t) into tOff
>> if tOff = 0 then return false
>> return length(t) = (tOff + tNumChars - 1) OR char (tOff +
>> tNumChars) of
> t is in tWB
>> end whole
>
>
> 3. Ken's "sneaky" entry that relies on a field as the source
> (probably
> because I did not spec out the problem properly, meant
> stringSource rather than
> field, and he's too damn good at reading things carefully):
>
>> put wholeWordMatch("This is a test",long id of fld 1)
>>
>> function wholeWordMatch pFindText,pFldRef
>> find whole pFindText in pFldRef
>> put the result into tResult
>> find empty
>> return (tResult <> "not found")
>> end wholeWordMatch
>
>
>
> Anyone care to top these? The winner will be placed in the stdLib
> assuming
> common consent!
>
> /H
>
>
>
>
> _______________________________________________
> metacard mailing list
> metacard at lists.runrev.com
> http://lists.runrev.com/mailman/listinfo/metacard
More information about the metacard
mailing list