A.8. Chapter 8
A.8.1. Exercise 1 solution
-- 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
A.8.2. Exercise 2 solution
-- 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
A.8.3. Exercise 3 solution
-- 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)
A.8.4. Exercise 4 solution
The call
reverse of listSort(L)
would give you a list sorted in descending order.
A.8.5. Exercise 5 solution
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 ...
Get Beginning AppleScript® now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.