Engranatges i politges¶
Volem representar un mecanisme format per una sèrie de rodes dentades i
politges mitjançant un graf de networkx. En
aquest graf, cada node correspondrà a una roda dentada i hi haurà una
aresta entre dos nodes sempre que les dents de les dues rodes
corresponents engranin o bé si estan unides mitjançant una
politja. Les arestes del graf estaran etiquetades amb l’atribut
'unio', que valdrà 'DENT' si les dues rodes
engranen o 'POL' quan les dues rodes estan
unides amb una politja.
Vegeu-ne un exemple:
Mecanisme compost d’engranatges i politges i el seu graf associat¶
Nota
Per tal de poder fer proves fàcilment disposeu del fitxer crea_graf.py, on hi ha la funció engranatge_exemple(), la qual crea i retorna el graf del mecanisme d’aquesta figura.
Implementeu les funcions que es demanen a continuació i deseu-les al mòdul engranatges (fitxer engranatges.py).
Funció npolitges¶
- engranatges.npolitges(gm)¶
- Paràmetres:
gm (Graph) – Graf que representa un mecanisme d’engranatges i politges
- Retorna:
Nombre de politges que té gm
Per exemple, essent g el mecanisme de la figura:
>>> npolitges(g) 3 >>> g.add_edge('A', 'J', unio='POL') >>> npolitges(g) 4
Disposeu de més jocs de proves al fitxer test-npolitges.txt.
Funció quantes_unions¶
- engranatges.quantes_unions(gm, r1, r2, un)¶
- Paràmetres:
- Retorna:
Nombre d’unions un que hi ha en el camí que uneix les rodes r2 i r2 en el mecanisme gm. Si no hi ha camí entre r1 i r2 en gm, ha de retornar 0 independentment del valor un.
Per exemple, essent g el mecanisme de la figura:
>>> quantes_unions(g, 'A', 'E', 'DENT') 3 >>> quantes_unions(g, 'A', 'E', 'POL') 2
Observeu que els grafs de mecanismes són acíclics i per tant, si ha ha camí entre dos nodes, aquest és únic (i és mínim).
Disposeu de més jocs de proves al fitxer test-quantes_unions.txt.
Funció moviment¶
- engranatges.moviment(gm, rd)¶
Per exemple, essent g el mecanisme de la figura:
>>> moviment(g, 'B') == {'C', 'F', 'H', 'E', 'G', 'I', 'D', 'A'} True >>> moviment(g, 'J') == {'K'} True
Disposeu de més jocs de proves al fitxer test-moviment.txt.
Funció grup_d_engranatges¶
- engranatges.grup_d_engranatges(gm, rd, un)¶
- Paràmetres:
- Retorna:
Conjunt de rodes dentades de gm que es mouen mitjançant una unió de tipus un quan es fa girar la roda dentada rd. rd ha d’estar exclosa del conjunt.
- Tipus de retorn:
Per exemple, essent g el mecanisme de la figura:
>>> grup_d_engranatges(g, 'I', 'DENT') == {'D', 'H', 'G'} True >>> grup_d_engranatges(g, 'I', 'POL') == {'F'} True
Disposeu de més jocs de proves al fitxer
test-grup_d_engranatges.txt.
Solucions
Disposeu de solucions al fitxer engranatges.py.