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