December 2004
Beginner
600 pages
13h 42m
English
-- Add three numbers and return the result
on sum(x, y, z)
if class of x is in {real, integer} and class of y is in {real, integer} and ¬
class of z is in {real, integer} then
return x + y + z
else
return 0
end if
end sum
-- sum all the numbers in a list
on listSum(L)
set theSum to 0
if class of L is list then
repeat with num in numbers in L
set theSum to theSum + num
end repeat
end
return theSum
end listSum
-- remove numItems items from L starting at n
on removeItems(L, n, numItems)
if n > 0 and numItems > 0 and n + numItems - 1 (count L) then
if n = 1 then -- remove leading items
if N + numItems - 1 = (count L) then
set L to {} -- remove all items
else
set L to items (n + numItems) thru −1 of L
end if
else if n + numItems - 1 = (count L) then -- remove ending items
set L to items 1 thru (n - 1) of L
else -- remove in between items
set L to (items 1 thru (n - 1) of L) & (items (n + numItems) thru −1) of L
end if
end if
return L
end removeItems
-- test case
removeItems({1,2,3,4,5}, 2, 3)
The call
reverse of listSort(L)
would give you a list sorted in descending order.
on listSort of L given ascendingSort:ascendingFlag
if ascendingFlag then
return quickSort(L, 1, count L)
else
return reverse of quickSort(L, 1, count L)
end if
end listSort
Bonus:
-- Recursive quick sort on listSort of L given ascendingSort:ascendingFlag return ...
Read now
Unlock full access