Choir 1 ======= A choir has stored the information of its singers in a :class:`list` of tuples (:class:`tuple`). Each tuple has three elements: the name (:class:`str`), the voice (:class:`str`) that can be soprano, alto, tenor or bass, and a Boolean (:class:`bool`) showing whether the singer can act as a soloist (``True``) or not (``False``). Save the following functions into the same file ``choir.py`` #. Write the function :py:func:`singers_dict` that takes a list as described, and returns a dictionary (:class:`dict`) in which keys are voices and values are lists of two elements: the number of singers with that voice (:class:`int`) and the number of singers with that voice that can act as soloists (:class:`int`). The dictionary must be complete taking into account the four mentioned voices. Example: .. literalinclude:: test-singers.txt :language: python :lines: 3-11 .. note:: You can download the file with tests :download:`test-singers.txt `. #. This choir has a dictionary for each musical piece of their repertoire with a structure similar to the dictionary computed in the previous function: keys are voices and values are lists of two elements: the number of singers with that voice and the number of soloists with that voice which are needed in this musical piece. Write the function :py:func:`feasible` that takes two dictionaries: a dictionary with the choir singers and a dictionary corresponding to a musical piece, and returns a Boolean (:class:`bool`) with the value of ``True`` if the choir has enough singers and soloists of each voice to represent this piece and ``False`` otherwise. Example: .. literalinclude:: test-feasible.txt :language: python :lines: 3- .. note:: You can download the file with tests :download:`test-feasible.txt `. .. rubric:: Solutions You have some solutions in file :download:`choir.py `.