CSE341 Section #2 Problems 1. Write a function called twoSame that returns true if a list of values has two consecutive values that are equal. Use pattern matching rather than calling functions like length, hd, and tl. 2. Write a function called stutter that takes a list as an argument and that returns the list formed by replacing each value in the list with two of that value. For example, stutter([1, 2, 3]) should return [1, 1, 2, 2, 3, 3]. 3. Write a function called stutterString that returns the result of replacing each character of a string with two of that character. For example, stutterString("hello") should return "hheelloo". 4. Write a function isPrime that takes an integer n and that returns true if n is a prime and false if it is not. By definition, a number is prime if it is divisible only by itself and 1. Your function should return false when n is less than 2. 5. Consider the following attempt to compute the maximum value in a list: fun bad_max([x]) = x | bad_max(x::xs) = if x > bad_max(xs) then x else bad_max(xs) What is the complexity of this function? Rewrite it to be O(n). 6. Write a function cycle that takes an integer n and a list and that returns the list obtained by moving the first n values to the end of the list. For example, cycle(4, [1, 2, 3, 4, 5, 6]) should return [5, 6, 1, 2, 3, 4]. You may assume that n is less than or equal to the length of the list. For this function, you can cycle a single value to the end of the list n different times. 7. Write a variation of the function described in problem 5 called cycle2 that computes its result efficiently. In particular, it should only perform a single list append. You may call the built-in function rev which is an efficient implementation of the reverse operation.