• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: Sorting
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Sorting


  • Subject: Re: Sorting
  • From: Robert Poland <email@hidden>
  • Date: Sun, 5 Oct 2003 11:45:27 -0600

Sent to list as Deivy Petrescu <email@hidden> won't accept this mail.

On Sunday, Oct 5, 2003, at 10:15 US/Eastern, Sascha Kuehn wrote:

sounds good but i'm looking for a free solution!!
sascha


Sascha, this script is a tweak of satimage's sort code.
The original version is by Emmanuel Levy.
I did not try to write any error checking, this is left as an exercise, however, this is a working script.

Bacause the mailer will screw up the less or equal sign, I'll substitute it by *leq*. So when you see *leq*, type alt -<.

Now one may think that this is a flaw in the server, which it is not. In its infinite wisdom, the mailer has decided that the sign "less or equal to" is offensive to cultures, so it decided to do away with it, and other offensive symbols that people on this list may inadvertently write.
Because we are not that bright, we tend to complain. But you know who knows better....


Note lista is your list.
coluna is the colunm you want the list sorted by.
tipo is the type, either up or down. I did not put any error checking, mind you.

set lista to {{"a", "cc", "bbb", "dddd"}, {"b", "aa", "ddd", "cccc"}, {"c", "dd", "aaa", "bbbb"}, {"d", "bb", "ccc", "aaaa"}}

sort(lista, 3, up)

on sort(lista, coluna, tipo)
set len to length of lista
if len = 1 then return lista
set y to (item coluna of (item 1 of lista))
set x to (item 1 of lista)
set lista to (rest of lista)
set lista1 to {}
set lista2 to {}
set len to length of lista
if tipo is down then
repeat with k from 1 to len
set i to contents of (item coluna of (item k of lista))
if y > i then
set end of lista2 to ((item k of lista) as list)
else
set end of lista1 to ((item k of lista) as list)
end if
end repeat
-- if (length of lista1 <= 1) and (length of lista2 !B 1) then

What was "!B 1" before the infinite wisdom corrected it?

-- return lista1 & {x} & lista2
-- else
-- return sort(lista1, coluna, tipo) & {x} & sort(lista2, coluna, tipo)
-- end if
else if tipo is up then
repeat with k from 1 to len
set i to contents of (item coluna of (item k of lista))
if y < i then
set end of lista2 to ((item k of lista) as list)
else
set end of lista1 to ((item k of lista) as list)
end if
end repeat
-- if (length of lista1 <=1) and (length of lista2 !B 1) then
-- return lista1 & {x} & lista2
-- else
-- return sort(lista1, coluna, tipo) & {x} & sort(lista2, coluna, tipo)
-- end if
end if
end sort

--->{{"c", "dd", "aaa", "bbbb"}, {"a", "cc", "bbb", "dddd"}, {"d", "bb", "ccc", "aaaa"}, {"b", "aa", "ddd", "cccc"}}





Regards

Deivy Petrescu
http://www.dicas.com/

--
Bob Poland - Englewood, CO
http://www.ibrb.org/
_______________________________________________
applescript-users mailing list | email@hidden
Help/Unsubscribe/Archives: http://www.lists.apple.com/mailman/listinfo/applescript-users
Do not post admin requests to the list. They will be ignored.

  • Follow-Ups:
    • Re: Sorting
      • From: Paul Berkowitz <email@hidden>
  • Prev by Date: Re: Sorting
  • Next by Date: Re: desktop snapshot
  • Previous by thread: Re: Option key (was Re: Sorting)
  • Next by thread: Re: Sorting
  • Index(es):
    • Date
    • Thread