text sortType

Andrew Kluthe andrew at ctech.me
Tue May 28 23:26:22 EDT 2013


Wow, such a plethora of solutions! Thank you. Worked like a charm. I just
wasn't thinking it through clear enough.

Andrew


On Tue, May 28, 2013 at 6:14 PM, Peter Haworth <pete at lcsql.com> wrote:

> Overall, I'd be inclined to use your solution Geoff - much easier to read
> whereas the others are the type of thing where you come back to it in a few
> months (or someone else looks at it the next day) and you think "what the
> hell is that!"
>
>
> Pete
> lcSQL Software <http://www.lcsql.com>
>
>
> On Tue, May 28, 2013 at 2:37 PM, Geoff Canyon <gcanyon at gmail.com> wrote:
>
> > Interesting -- this works in one line:
> >
> >    sort lines of x by word 1 to -2 of item 1 of each & char -10 to -1 of
> > ("0000000000" & word -1 of item 1 of each)
> >
> > I'm a little put off by not using the native "numeric" -- I'd be worried
> > that something I'm not thinking of right now would break it. But
> > nevertheless, it works.
> >
> > I timed three options and found that (on the sample I tried --  1 million
> > lines)
> >
> >    sort lines of x numeric by word -1 of item 1 of each
> >    sort lines of x by word 1 to -2 of item 1 of each
> >
> > is fastest, barely.
> >
> >    sort lines of x by word 1 to -2 of item 1 of each & char -10 to -1 of
> > ("0000000000" & word -1 of item 1 of each)
> >
> > is just slightly slower.
> >
> >    sort lines of x by sortKey(item 1 of each)
> >
> > with
> >
> > function sortKey X
> >    return ((word 1 to -2 of X) & (char -10 to -1 of ("0000000000" & word
> -1
> > of X)))
> > end sortKey
> >
> > was slower, but only by about 1.4 times.
> >
> > gc
> >
> >
> > On Tue, May 28, 2013 at 3:04 PM, Dar Scott <dsc at swcp.com> wrote:
> >
> > > Whoops, I didn't read Peter's solution all the way.
> > >
> > > I guessed at what he was doing instead of giving it the attention it
> > > deserved.
> > >
> > > I guess my thumbs up was for using the sorting value function and for
> > > putting in zero digits.
> > >
> > > I would (off the top of my head) simplify (and change) that to this:
> > >
> > > function reformatLine pL
> > >   get item 1 of it
> > >   return (word 1 to -2 of it) && char -6 to -1 of ("000000" & word -1
> of
> > > it)
> > > end reformatLine
> > >
> > > By adding leading zeros for a fixed length, a text sort is the same as
> a
> > > number sort.
> > >
> > > A 3rd solution is to put fixed length numerals in the last word of the
> > > original data.
> > >
> > > (I could try using the *s as an excuse, but it is not a good excuse,
> > sorry
> > > for commenting after only a glance.)
> > >
> > > Dar
> > >
> > >
> > > On May 28, 2013, at 1:51 PM, Dar Scott wrote:
> > >
> > > > I think this and Geoff's are good!  This one is more general if you
> can
> > > come up with some sort of metric or sortvalue for each item/list.
> >  Geoff's
> > > is simpler for this case.  The speed difference will depend on the
> length
> > > of the list.
> > > >
> > > > Shouldn't the zero be put 'before' instead of 'after' to force a
> > > numerical sort?
> > > >
> > > > Also, there is a shortcut.
> > > >
> > > > put char -6 to -1 of ("000000" & tKey) into tKey
> > > >
> > > > Dar
> > > >
> > > >
> > > > On May 28, 2013, at 1:41 PM, Peter Haworth wrote:
> > > >
> > > >> The following worked for me (with apologies ofr any asterisks that
> may
> > > be
> > > >> inserted into the script by my email client)
> > > >>
> > > >> It assumes there won;t be any numbers > 6 digits.
> > > >>
> > > >> *on* mouseUp
> > > >>
> > > >>  *sort* lines of field "Field" by reformatLine(each)
> > > >>
> > > >> *end* mouseUp
> > > >>
> > > >>
> > > >> *function* reformatLine l
> > > >>
> > > >>  *local* tKey
> > > >>
> > > >>  *put* word 1 to -2 of item 1 of l into tKey
> > > >>
> > > >>  *repeat* 6-the length of word -1 of item 1 of l
> > > >>
> > > >>     *put* zero after tKey
> > > >>
> > > >>  *end* *repeat*
> > > >>
> > > >>  *put* word -1 of item 1 of l after tKey
> > > >>
> > > >>  *return* tKey
> > > >>
> > > >> *end* reformatLine
> > > >>
> > > >> Pete
> > > >> lcSQL Software <http://www.lcsql.com>
> > > >> _______________________________________________
> > > >> 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
> > >
> > _______________________________________________
> > 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
>



-- 
Regards,

Andrew Kluthe
andrew at ctech.me



More information about the use-livecode mailing list