Plantejament
- Identifiquem cada vertex amb una lletra.
- Construim un diccionari python amb una 'cassella' per a cada vertex.
- Fem una 'llista' (és una tupla en realitat) amb els parells de nodes adjacents.
- Provem totes les permutacions de digits tot imprimint les que compleixen amb els requeriments de l'enunciat.
El codi del programa
from itertools import permutations, combinations_with_replacement
vertex = {}
for identificador in ( 'A','B','C','D','E','F' ):
vertex[identificador] = None
adjacents = (
( 'A', 'B' ), ( 'A', 'D' ), ( 'A', 'E' ), ( 'A', 'F' ),
( 'B', 'A' ), ( 'B', 'D' ), ( 'B', 'C' ),
( 'C', 'B' ), ( 'C', 'D' ), ( 'C', 'F' ),
( 'D', 'A' ), ( 'D', 'B' ), ( 'D', 'C' ), ('D', 'E'),
( 'E', 'A' ), ( 'E', 'D' ), ( 'E', 'F' ),
( 'F', 'A' ), ( 'F', 'C' ), ( 'F', 'E' ),
)
digits = ( 5,6,7,8,9,10 )
for (vertex['A'], vertex['B'], vertex['C'],
vertex['D'], vertex['E'], vertex['F'], ) in permutations ( digits ):
if all( vertex[ v1 ] - vertex[v2] != 1 for ( v1, v2) in adjacents ):
print ( 'A:', vertex['A'], 'B:', vertex['B'], 'C:', vertex['C'],
'D:', vertex['D'], 'E:', vertex['E'], 'F:', vertex['F'] )
El resultat
dani@egg-v3:~/tmp/llu$ python vertexs.py
('A:', 5, 'B:', 8, 'C:', 6, 'D:', 10, 'E:', 7, 'F:', 9)
('A:', 10, 'B:', 7, 'C:', 9, 'D:', 5, 'E:', 8, 'F:', 6)
Cap comentari:
Publica un comentari a l'entrada