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