3. Grafs: Més sobre ús del xat de Moodle (2 punts)¶
Fa molt de temps, en una universitat molt llunyana, es feia servir Moodle per a lliurar els fitxers. Moodle disposa d’un xat, que, com és lògic, està prohibit utilitzar-lo durant els exàmens. Els professors d’una assignatura van voler saber quins estudiants l’havien fet servir durant un examen. Així doncs, van descarregar els registres d’accés a Moodle i van transferir la informació en un graf no dirigit (un networkx.Graph). Cada node del graf corresponia al nom d’un estudiants i una aresta entre dos nodes indicava que dos estudiants havien xatejat durant l’examen. Les arestes estaven etiquetades amb un atribut de nom 'minuts' que indicava quanta estona havien xerrat els dos estudiants. Vegeu-ne un exemple:
Graf amb tres grups d’estudiants xatejadors. (Nota: els noms dels estudiants han estat alterats per preservar la seva identitat).¶
Al mòdul xat_moodle (fitxer xat_moodle.py), implementeu-hi la funció següent:
- xat_moodle.enregistra(gx, est1, est2, n)¶
- Paràmetres:
Actualitza gx, enregistrant-hi que l’estudiant est1 ha intercanviat missatges pel xat de Moodle amb l’estudiant est2 durant n minuts, addicionalment a la informació que ja constava en gx.
Per exemple, si gx és el graf de l’exemple de més amunt, aquesta funció ha de respondre així:
>>> enregistra(gx, 'Mariona', 'Meritxell', 10)
>>> gx.edges(['Mariona', 'Mertitxell'], data='minuts')
EdgeDataView([('Mariona', 'Meritxell', 10)])
>>> enregistra(gx, 'Ramon', 'Ramonet', 5)
>>> gx.edges(['Ramon'], data='minuts')
EdgeDataView([('Ramon', 'Ramona', 11), ('Ramon', 'Ramonet', 6)])
>>> enregistra(gx, 'Cayetana', 'Kevin', 20)
>>> gx.edges(data='minuts')
EdgeDataView([('Bruno', 'Jimena', 5), ('Bruno', 'Borjamari', 16), ('Jimena', 'Cayetana', 7), ('Matilda', 'Cayetana', 12), ('Borjamari', 'Cayetana', 8), ('Cayetana', 'Kevin', 20), ('Kevin', 'Jenny', 5), ('Jenny', 'Yanira', 14), ('Mariona', 'Meritxell', 10), ('Ramon', 'Ramona', 11), ('Ramon', 'Ramonet', 6), ('Ramona', 'Ramonet', 3)])
Disposeu de més jocs de proves al fitxer tests-enregistra.txt.