.. py:module:: baralla Baralla de cartes ================= El mòdul :py:mod:`baralla` conté tot un seguit de funcions que permeten crear, modificar i consultar el conjunt de cartes d'una baralla. Hem decidit representar una carta amb una tupla `(n, p)`, on - `n` és el número (entre 1 i 12) i - `p` és el pal, una cadena de caràcters que pot valdre ``'oros'``, ``'copes'``, ``'espases'`` o ``'bastos'``. Una baralla, sencera o no, es representa com una llista de cartes. Es demana que: #. Dissenyeu la funció :py:func:`nova_baralla` [#n1]_: .. py:function:: nova_baralla() Retorna una baralla amb les 48 cartes ordenades: [(1, 'oros'), (2, 'oros'), ... (12, 'bastos')] Per exemple: .. literalinclude:: baralla.txt :language: python :lines: 7-15 #. Dissenyeu la funció següent [#n1]_: .. py:function:: nom_carta(carta) Retorna el nom tradicional de la carta (:py:class:`str`) calculat a partir de la tupla `carta`. Per exemple: .. literalinclude:: baralla.txt :language: python :lines: 21-30 Recordeu que tradicionalment s'anomena *as* al número 1, *sota* al 10, *cavall* a l'11 i *rei* al 12. #. Definiu la funció següent [#n1]_: .. py:function:: escriu(baralla) Escriu a la sortida estàndard el nom tradicional de totes les cartes de la baralla `baralla`. Per exemple: .. literalinclude:: baralla.txt :language: python :lines: 36-46 #. Dissenyeu la funció següent [#n1]_: .. py:function:: treu_carta(b) Retorna la primera carta de la baralla `b` i l'elimina de la baralla `b`. Per exemple: .. literalinclude:: baralla.txt :language: python :lines: 52-60 #. Utilitzant la funció :py:func:`~random.shuffle` del mòdul :py:mod:`random`, dissenyeu la funció següent [#n1]_: .. py:function:: barreja(b) Barreja les cartes de la baralla `b`, intercanviant-ne l'ordre a l'atzar. Per exemple: .. literalinclude:: baralla.txt :language: python :lines: 66-74 #. Dissenyeu la funció següent [#n1]_: .. py:function:: quatre_bastos_seguits(b) Retorna `True` si a la baralla `b` hi ha quatre cartes de bastos juntes i `False` altrament. Per exemple: .. literalinclude:: baralla.txt :language: python :lines: 80-86 #. Dissenyeu la funció següent [#n1]_: .. py:function:: talla(b, l) Retorna una nova baralla calculada tallant en dues piles la baralla de cartes `b` pel lloc `l` i empilant-les en l'ordre contrari. Per exemple: .. literalinclude:: baralla.txt :language: python :lines: 92-107 .. rubric:: Solució Disposeu d'una solució al fitxer :download:`baralla.py `. Us encoratgem a resoldre el problema abans de mirar la solució. Useu-la per comparar-la amb la vostra. .. rubric:: Notes .. [#n1] Disposeu de jocs de prova al fitxer :download:`baralla.txt`.