Sort of a problem

stephen barncard stephenREVOLUTION2 at barncard.com
Fri May 11 00:25:11 EDT 2012


that's the one!

On Thu, May 10, 2012 at 9:23 PM, Jerry Jensen <jhj at jhj.com> wrote:

> This seems to do the job. No polish, but you'll get the idea.
> .Jerry
>
> Aw, crap, forgot about no attachments. Here's the code:
>
> ------------------------------------------------
>
> on mouseUp
>   local tList
>   put fld "Streets" into tList
>   sort lines of tList by pickStreet(each)
>   put tList into fld "Streets"
> end mouseUp
>
> function pickStreet pName
>   if word 1 of pName is in "NSEW" then
>      return word 2 to -1 of pName
>   else
>      return pName
>   end if
> end pickStreet
>
> -----------------------------------------------------
>
> On May 10, 2012, at 8:46 PM, Jim Hurley wrote:
>
> > I have a list of streets:
> >
> > Main St
> > Oak Ave
> > N Auburn
> > Kimberly Ct
> > S Rector Rd
> > Maple Ave
> > W Pine St
> > Fairmont Ave
> >
> > I want to sort them, but ignoring the compass prefix (N E S W) to give:
> >
> > N Auburn
> > Fairmont Ave
> > Kimberly Ct
> > Main St
> > Maple Ave
> > Oak Ave
> > W Pine St
> > S Rector Rd
> >
> > The best I have come up with is performing a bubble sort where I have
> control of the first word.
> >
> > That script is below. This works well enough for short lists, but not
> for longer lists.
> > It might be possible to speed it up with arrays, but that is not what
> I'm after right now.
> > I have seen some amazing things done with custom sorts in Live Code. I
> confess, I never understood them.
> >
> > Is there a custom sort available in Live Code to do this kind of sort?
> >
> > Thanks,
> > JIm Hurley
> >
> > Here is the bubble sort:
> >
> > on mouseUp
> >  put field 1 into tList
> >  put "N E S W" into tWordsToIgnore
> >  put the number of lines in tList into n
> >  repeat
> >     put true into noChange
> >     repeat with i = 1 to n-1
> >        put theFirstWord(line i of tList, tWordsToIgnore) into tFirst
> >        put  theFirstWord(line i + 1 of tList, tWordsToIgnore) into
> tSecond
> >  --Reverse sequencial pairs if out of order.
> >        if tFirst > tSecond then
> >           put line i  of tList into temp
> >           put line i + 1 of tList into line i of tList
> >           put temp into line i + 1 of tList
> >           put false into  noChange
> >        end if
> >     end repeat
> >     if the shiftKey is down then exit to top --Just in case
> >     if  noChange then exit repeat ---Keep it up until no change.
> >  end repeat
> >  put tList into field 2
> > end mouseUp
> >
> > function theFirstWord temp, tIgnoreWords
> >  put word 1 of temp into tFIrstWord
> >  if tFirstWord is among the words of tIgnoreWords then
> >     return word 2 of temp
> >  else
> >     return word 1 of temp
> >  end if
> > end theFirstWord
> > _______________________________________________
> > use-livecode mailing list
> > use-livecode at lists.runrev.com
> > Please visit this url to subscribe, unsubscribe and manage your
> subscription preferences:
> > http://lists.runrev.com/mailman/listinfo/use-livecode
>
> _______________________________________________
> use-livecode mailing list
> use-livecode at lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your
> subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode
> _______________________________________________
> use-livecode mailing list
> use-livecode at lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your
> subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode
>



-- 



Stephen Barncard
San Francisco Ca. USA

more about sqb  <http://www.google.com/profiles/sbarncar>



More information about the Use-livecode mailing list