Sort of a problem
Bob Sneidar
bobs at twft.com
Fri May 11 11:57:00 EDT 2012
There ya go. :-)
Bob
On May 10, 2012, at 9:23 PM, Jerry Jensen 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
More information about the use-livecode
mailing list