=============================================== Graf d'un joc de rol =============================================== En un joc de rol, hem representat les diferents zones de l'escena i la forma com estan connectades mitjançant un graf simètric de :doc:`NetworkX ` les zones són els nodes graf, i una aresta des de *a* fins a *b* indica que els jugadors poden anar de la zona *a* a la zona *b*. Cada aresta del graf manté informació per saber com es passa d'una zona a l'altra (amb una carretera, un pont, una porta, etc). A tal fi, les arestes sempre tenen associat l'atribut de nom `connexio` Per exemple, la següent figura representa una escena d'un joc amb nou zones: .. image:: graf-jrol2.svg :height: 400 pt :align: center Funció nova_connexio (2 punts) -------------------------------------------------- .. py:module:: connecta :noindex: Al fitxer :file:`connecta.py` (mòdul :py:mod:`connecta`), escriviu-hi la funció següent: .. py:function:: nova_connexio(g, z1, z2, t) :param ~networkx.Graph g: graf de l'escena d'un joc de rol :param str z1: nom d'una zona de l'escena :param str z2: nom d'una zona de l'escena :param str t: nom del tipus de connexió Afegeix una connexió de tipus `t` entre les zones `z1` i `z2` de `g`. Si alguna de les dues zones no pertany a `g` s'hi afegeix. Si ja hi havia una connexió entre les dues zones però l'atribut no conté l'string `t`, s'afegeix el tipus de connexió al final de l'atribut separat per :py:const:`'/'`. Si l'atribut ja conté l'string `t` no es fa res. Per exemple, .. literalinclude:: tests-connexio.txt :language: pycon :end-before: --fi-enunciat Disposeu d'un joc de proves al fitxer :download:`tests-connexio.txt`. Funció longituds_camins (2 punts) -------------------------------------------------- .. py:module:: longs :noindex: Al fitxer :file:`longs.py` (mòdul :py:mod:`longs`), escriviu-hi la funció següent: .. py:function:: longituds_camins(g, z1, z2) :param ~networkx.Graph g: graf de l'escena d'un joc de rol :param str z1: nom d'una zona de l'escena :param str z2: nom d'una segona zona de l'escena (diferent de `z1`) :return: Conjunt de les longituds de tots els camins simples possibles que van de la zona `z1` a la zona `z2` en `g`. Un camí simple és un camí que no passa dues vegades pel mateix node; la seva longitud és el nombre d'arestes que té. :rtype: :py:class:`set` d'enters positius Per exemple, .. literalinclude:: tests-longituds.txt :language: pycon :end-before: --fi-enunciat Disposeu d'un joc de proves al fitxer :download:`tests-longituds.txt`.