Write a function
        clamp_2d_list(a_2d_list, minimum_value,
          maximum_value),
	    which takes 3 parameters.  The first parameter is a
        2-dimensional list
	    (not necessarily square) of integers, and the final two
        parameters are
	    also integers.  Your function should return a 2
        dimensional list of the
	    same dimensions of a_2d_list, where each value in
        the 2-d list
	    has been clamped between the specified minimum and maximum
        values.
  
    >>> my_list = [[-2, -1], [0, 1]]
    >>> print(clamp_2d_list(my_list, -1, 0))
    [[-1, -1], [0, 0]]
  
  
      Write a function called remove_dups(a_list), which
      takes a two
        dimensional list of items as a parameter.  This function
      should return a new
        list, which contains all of the unique items from the input
      list.
  
    >>> in_list = [0, 1, 2, 1, 2, 3]
    >>> print(remove_dups(a_list))
    [0, 1, 2, 3]
  
  
      Write a function called generate_vigenere(), which
      takes 0
        parameters.  Your function should return a dictionary that
      represents a
        Vigenère square.  Your function should generate this
      dictionary
        dynamically, as opposed to hard-coding the values.  For
      example:
  
    >>> square = generate_vigenere()
    >>> for key in square:
    ...     print(key, "->", square[key])
    'a' -> ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k',
    'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x',
    'y', 'z']
    'c' -> ['c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm',
    'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
    'a', 'b']
    'b' -> ['b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l',
    'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y',
    'z', 'a']
    'e' -> ['e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o',
    'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'a', 'b',
    'c', 'd']
    'd' -> ['d', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n',
    'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'a',
    'b', 'c']
    .
    .
    .