The Challenge (was whole(string) is in a fld)

FlexibleLearning at aol.com FlexibleLearning at aol.com
Wed Jun 13 14:35:46 CDT 2007


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



   


More information about the metacard mailing list