is_prime(n): a predicate that returns true if n is a prime number, and false otherwise.
sphere_volume(r) : a function that computes the volume of a sphere, given its radius r.
quadratic_equation(a,b,c): a function that computes the real roots of a given quadratic equation a*X^2+b*X+c=0.
number_of_zeros(lst): a function that returns the number of zeros in a given simple list of numbers lst.
draw_pascal(n): a function that takes an integer n as a parameter and prints the first n rows of the Pascal's triangle.
days(date1,date2): a function that takes two dates, date1 and date2, in some format, and returns the number of days from date1 to date2, inclusive.
is_palindrome(lst): a predicate that returns true if lst is a palindrome, and false otherwise.
remove_consecutive_dups(lst): a function that returns a copy of lst with consecutive duplicates of elements eliminated. For example, for lst = [a,a,a,a,b,c,c,a,a,d,e,e,e,e], the returned list is [a,b,c,a,d,e].
replicate(lst,n): a function that replicates each of the elements of lst a given number of times. For example, for lst = [a,b,c] and n = 3, the returned list is [a,a,a,b,b,b,c,c,c].
split_list(lst,n): a function that splits lst into two parts with the first part having n elements, and returns a list that contains these two parts.
(optional) bc(n,k): a function that returns the binomial coefficient "n choose k". Can you figure out a method that is less likely to cause an overflow than using the formula (n*(n-1)*...*(n-k+1))/(k*(k-1)*...*2)?
(optional) subsets(s,n): a function that returns the set of n-element subsets of s.
(optional) max_subarray(arr): a function that returns a contiguous subarray within arr which has the largest sum.