DESCRIPTION Students: Please keep in mind the OMSI rules. Save your files often, make sure OMSI fills your entire screen at all times, etc. Remember that clicking CopyQtoA will copy the entire question box to the answer box. In questions involving code which will PARTIALLY be given to you in the question specs, you may need add new lines. There may not be information given as to where the lines should be inserted. MAKE SURE TO RUN THE CODE IN PROBLEMS THAT INVOLVING CODE! QUESTION -ext .py -run 'python omsi_answer1.py' Here you will write a function that extracts from a character string, say a file name, the suffix, meaning the substring following the last instance of '.' in the string. If none, the function will return None. Fill in the blanks. def getsuff(s): print getsuff('abc.de.f') # prints 'f' print getsuff('abc de f') # prints None QUESTION -ext .py -run 'python omsi_answer2.py' Here you will write a function that determines the number of rows and columns in a matrix, by which we will mean a two-dimensional array that is not "ragged," i.e. does not have the same number of elements in each row. Fill in the blanks. def nrowcol(m): a = [[5,1],[12,8],[13,88]] print nrowcol(a) # prints (3,2) QUESTION -ext .py -run 'python omsi_answer3.py' Here you will write a function to compute the sum of all the elements in x, where x is either a list, or a list of lists, or a list of lists of lists and so on. Elements can also be numbers. This can go to any depth, and with any number of elements per list. Your code will use recursion. Fill in the blanks. def bigsum(x): tot = 0 for i in x: return tot a = [5,12,13] b = [2,a] c = [3,[8,a,b]] d = [[8,a,b],b,1] print bigsum(a) # 30 print bigsum(b) # 32 print bigsum(c) # 73 print bigsum(d) # 103