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 <gcan...@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 <d...@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@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@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@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@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@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-livecode