Daus ==== .. py:module:: daus .. warning:: Per a resoldre aquest exercici **no es poden fer servir iteracions (ni** ``for`` **ni** ``while`` **)**, només les :ref:`funcions predefinides ` de Python i les dels mòduls :py:mod:`itertools`, :py:mod:`functools` i :py:mod:`operator`. **Tampoc es poden fer servir llistes**, tuples, diccionaris ni cap altra estructura de dades **per a desar tots els elements dels iterables**. El professorat del seminari de matemàtiques d'un institut de secundària vol disposar de programes que ajudin als estudiants de ESO a entendre el càlcul de probabilitats. Deseu les dues funcions següents al fitxer :file:`daus.py`. #. En primer lloc, volen mostrar tots els resultats possibles quan es llença a l'aire un nombre donat d'objectes idèntics, com ara monedes o daus. Per això cal que dissenyeu la funció següent: .. py:function:: llista_casos(nobjectes, valors) Donat el nombre d'objectes que es llencen, *nobjectes* i donada una llista, *valors*, que conté tots els valors possibles que poden tenir els objectes (p.e. ['CARA', 'CREU'] per les monedes, [1, 2, 3, 4, 5, 6] pels daus cúbics, [1, 2, 3, 4] pels daus tetraèdrics, etc), retorni una llista de llistes amb totes les combinacions de resultats possibles. L'ordre en què s'han de retornar les combinacions de la llista és `l'ordre lexicogràfic `__ induït per la relació: *valors[0] < valors[1] < valors[2] < ... < valors[len(valors)-1]* essent *valors[i]* la llista de valors d'entrada. Aquest és l'ordre per defecte que utilitzen tant la funció :func:`sorted` com el mètode :py:meth:`list.sort` del tipus :py:class:`list`. .. literalinclude:: daus.txt :language: python :lines: 5,7-8,10-11,19-22 Per resoldre la funció :py:func:`llista_casos` podeu utilitzar :py:func:`itertools.product` i :py:func:`map`. #. En segon lloc, volen saber totes les possibles sumes de tirar *n* daus amb les cares numerades de forma no habitual. Per això cal que dissenyeu la funció següent: .. py:function:: conjunt_sumes(n, lc) Donat *n*, el nombre de daus i *lc*, una llista amb els sis valors numèrics de les cares dels daus, retorna el conjunt (un :ref:`set de Python `) de possibles sumes resultants. .. literalinclude:: daus.txt :language: python :lines: 25,30-31,33-34 Per resoldre la funció :py:func:`conjunt_sumes` podeu utilitzar :py:func:`map` i :py:func:`sum`. Disposeu de jocs de prova al fitxer :download:`daus.txt` i d'una solució a :download:`daus.py `.